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.
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.
+
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-msvcr-dll=/cygdrive/c/msvcr100.dll rather than --with-msvcr-dll=c:\msvcr100.dll. For details on this conversion, see the section on Fixpath.
Cygwin
A functioning Cygwin 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.
@@ -364,37 +361,24 @@ CC: Sun C++ 5.13 SunOS_i386 151846-10 2015/10/30
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.
+
The rule of thumb is that the boot JDK for building JDK major version N should be a 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've got the latest update version, since JDK 8 GA might not be able to build JDK 9 on all platforms.
+
Early in the release cycle, version N-1 may not yet have been released. In that case, the preferred boot JDK will be version N-2 until version N-1 is available.
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. Another is the Adopt OpenJDK Project, 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, or to install it using brew cask install java. Another option is the Adopt OpenJDK Project, 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.
+
Getting JDK binaries
+
OpenJDK binaries for Linux, Windows and macOS can be downloaded from jdk.java.net. An alternative is to download the Oracle JDK. Another is the Adopt OpenJDK Project, which publishes experimental prebuilt binaries for various platforms.
+
On Linux you can also get OpenJDK from the Linux distribution. On apt-based distros (like Debian and Ubuntu), sudo apt-get install openjdk-<VERSION>-jdk is typically enough to install OpenJDK <VERSION>. On rpm-based distros (like Fedora and Red Hat), try sudo yum install java-<VERSION>-openjdk-devel.
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 is required on all platforms. At least version 2.3 is required.
+
FreeType2 from The FreeType Project is not required on any platform. The exception is on Unix-based platforms when configuring such that the build artifacts will reference a system installed library, rather than bundling OpenJDK's own copy.
-
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 an apt-based Linux, try running sudo apt-get install libfreetype6-dev.
+
To install on an rpm-based Linux, try running sudo yum install freetype-devel.
To install on Solaris, try running pkg install system/library/freetype-2.
-
To install on macOS, try running brew install freetype.
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:
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
+
Use --with-freetype-include=<path> and --with-freetype-lib=<path> if configure does not automatically locate the platform FreeType files.
CUPS
CUPS, Common UNIX Printing System header files are required on all platforms, except Windows. Often these files are provided by your operating system.
This can be a sign of a Cygwin problem. See the information about solving problems in the 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 . Please include the relevant parts of the configure and/or build log.
+
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. 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 for more information.
Hints and Suggestions for Advanced Users
Setting Up a Forest for Pushing Changes (defpath)
diff --git a/doc/building.md b/doc/building.md
index 77731ac9c3c..65f845f233d 100644
--- a/doc/building.md
+++ b/doc/building.md
@@ -173,8 +173,8 @@ 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
+`configure`. So, use `--with-msvcr-dll=/cygdrive/c/msvcr100.dll` rather than
+`--with-msvcr-dll=c:\msvcr100.dll`. For details on this conversion, see the section
on [Fixpath](#fixpath).
#### Cygwin
@@ -401,43 +401,31 @@ 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
+should be a 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.
+you are following the *N-1* rule, make sure you've got the latest update
+version, since JDK 8 GA might not be able to build JDK 9 on all platforms.
+
+Early in the release cycle, version *N-1* may not yet have been released. In
+that case, the preferred boot JDK will be version *N-2* until version *N-1*
+is available.
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
+### Getting JDK binaries
-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`.
+OpenJDK binaries for Linux, Windows and macOS can be downloaded from
+[jdk.java.net](http://jdk.java.net). 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 various platforms.
-### 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/).
+On Linux you can also get OpenJDK from the Linux distribution. On apt-based
+distros (like Debian and Ubuntu), `sudo apt-get install openjdk--jdk`
+is typically enough to install OpenJDK \. On rpm-based distros (like
+Fedora and Red Hat), try `sudo yum install java--openjdk-devel`.
## External Library Requirements
@@ -456,43 +444,19 @@ 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.
+FreeType2 from [The FreeType Project](http://www.freetype.org/) is not required
+on any platform. The exception is on Unix-based platforms when configuring such
+that the build artifacts will reference a system installed library,
+rather than bundling OpenJDK's own copy.
* To install on an apt-based Linux, try running `sudo apt-get install
- libcups2-dev`.
+ libfreetype6-dev`.
* To install on an rpm-based Linux, try running `sudo yum install
- cups-devel`.
+ freetype-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=` 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=`. This will
-automatically build the freetype library into `/lib64` for 64-bit
-builds or into `/lib32` for 32-bit builds. Afterwards you can
-always use `--with-freetype-include=/include` and
-`--with-freetype-lib=/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
-```
+Use `--with-freetype-include=` and `--with-freetype-lib=`
+if `configure` does not automatically locate the platform FreeType files.
### CUPS
diff --git a/doc/testing.html b/doc/testing.html
index be4c23302bd..1963b3bd636 100644
--- a/doc/testing.html
+++ b/doc/testing.html
@@ -40,7 +40,7 @@
$ 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="hotspot/test:hotspot_gc" JTREG="JOBS=1;TIMEOUT=8;VM_OPTIONS=-XshowSettings -Xlog:gc+ref=debug"
$ make run-test TEST="jtreg:hotspot/test:hotspot_gc hotspot/test/native_sanity/JniVersion.java"
$ make exploded-run-test TEST=hotspot_tier1
Configuration
@@ -77,8 +77,8 @@ TEST FAILURE
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.)
+
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_OPTIONS=-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_OPTIONS=-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
diff --git a/doc/testing.md b/doc/testing.md
index da9b8ca7624..6e5aa8dfc4f 100644
--- a/doc/testing.md
+++ b/doc/testing.md
@@ -18,7 +18,7 @@ Some example command-lines:
$ 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="hotspot/test:hotspot_gc" JTREG="JOBS=1;TIMEOUT=8;VM_OPTIONS=-XshowSettings -Xlog:gc+ref=debug"
$ make run-test TEST="jtreg:hotspot/test:hotspot_gc hotspot/test/native_sanity/JniVersion.java"
$ make exploded-run-test TEST=hotspot_tier1
@@ -140,11 +140,11 @@ 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"`.
+as in `JTREG="VM_OPTIONS=-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`.
+certain options, e.g. `JTREG=VM_OPTIONS=-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.)
diff --git a/make/CompileJavaModules.gmk b/make/CompileJavaModules.gmk
index 962d6b432ff..6e11edad9d8 100644
--- a/make/CompileJavaModules.gmk
+++ b/make/CompileJavaModules.gmk
@@ -252,6 +252,10 @@ java.prefs_ADD_JAVAC_FLAGS += -Xdoclint:all/protected '-Xdoclint/package:java.*,
################################################################################
+java.transaction.xa_ADD_JAVAC_FLAGS += -Xdoclint:all/protected '-Xdoclint/package:javax.*'
+
+################################################################################
+
java.sql_ADD_JAVAC_FLAGS += -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'
java.sql_SETUP := GENERATE_JDKBYTECODE_NOWARNINGS
diff --git a/make/InitSupport.gmk b/make/InitSupport.gmk
index 515a887e6b1..c63941f47ca 100644
--- a/make/InitSupport.gmk
+++ b/make/InitSupport.gmk
@@ -435,7 +435,7 @@ else # $(HAS_SPEC)=true
define PrepareCompareBuild
$(ECHO) "Preparing for comparison rebuild"
# Apply patch, if any
- $(if $(COMPARE_BUILD_PATCH), $(PATCH) -p1 < $(COMPARE_BUILD_PATCH))
+ $(if $(COMPARE_BUILD_PATCH), cd $(topdir) && $(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
@@ -455,7 +455,7 @@ else # $(HAS_SPEC)=true
# 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))
+ $(if $(COMPARE_BUILD_PATCH), cd $(topdir) && $(PATCH) -R -p1 < $(COMPARE_BUILD_PATCH))
# Move this build away and restore the original build
$(MKDIR) -p $(topdir)/build/compare-build
$(MV) $(OUTPUTDIR) $(COMPARE_BUILD_OUTPUTDIR)
diff --git a/make/InterimImage.gmk b/make/InterimImage.gmk
index 486b24db2d7..af7ae90f7cb 100644
--- a/make/InterimImage.gmk
+++ b/make/InterimImage.gmk
@@ -48,6 +48,7 @@ $(INTERIM_IMAGE_DIR)/$(JIMAGE_TARGET_FILE): $(JMODS) \
$(RM) -r $(INTERIM_IMAGE_DIR)
$(JLINK_TOOL) \
--output $(INTERIM_IMAGE_DIR) \
+ --disable-plugin generate-jli-classes \
--add-modules $(INTERIM_MODULES_LIST)
$(TOUCH) $@
diff --git a/make/Main.gmk b/make/Main.gmk
index 74b93b80f68..904c1c29cdc 100644
--- a/make/Main.gmk
+++ b/make/Main.gmk
@@ -399,10 +399,13 @@ docs-zip:
update-build-docs:
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f UpdateBuildDocs.gmk)
+update-x11wrappers:
+ +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f UpdateX11Wrappers.gmk)
+
ALL_TARGETS += docs-jdk-api-javadoc docs-jdk-api-modulegraph \
docs-javase-api-javadoc docs-javase-api-modulegraph \
docs-reference-api-javadoc docs-reference-api-modulegraph docs-jdk-specs \
- docs-jdk-index docs-zip update-build-docs
+ docs-jdk-index docs-zip update-build-docs update-x11wrappers
################################################################################
# Cross compilation support
@@ -724,9 +727,9 @@ else
# If not already set, set the JVM target so that the JVM will be built.
JVM_MAIN_TARGETS ?= hotspot
-
+
# Building java.base-jmod requires all of VM (ie hotspot) to be built.
- java.base-jmod: $(JVM_MAIN_TARGETS)
+ java.base-jmod: $(JVM_MAIN_TARGETS)
# Declare dependencies from -jmod to all other module targets
# When creating a BUILDJDK, the java compilation has already been done by the
@@ -830,7 +833,7 @@ else
# If not already set, then set the JVM specific docs targets
JVM_DOCS_TARGETS ?= hotspot-$(JVM_VARIANT_MAIN)-gensrc
-
+
# The gensrc steps for hotspot and jdk.jdi create html spec files.
docs-jdk-specs: $(JVM_DOCS_TARGETS) jdk.jdi-gensrc \
docs-jdk-index
@@ -894,6 +897,8 @@ else
generate-summary: jmods buildtools-modules
+ update-x11wrappers: java.base-copy buildtools-jdk
+
endif
################################################################################
diff --git a/make/RunTests.gmk b/make/RunTests.gmk
index 81cb8ff2ba8..83cb4f68e91 100644
--- a/make/RunTests.gmk
+++ b/make/RunTests.gmk
@@ -60,6 +60,18 @@ define SetTestOpt
endif
endef
+# Setup _NT_SYMBOL_PATH on Windows
+ifeq ($(OPENJDK_TARGET_OS), windows)
+ ifndef _NT_SYMBOL_PATH
+ # Can't use PathList here as it adds quotes around the value.
+ _NT_SYMBOL_PATH := \
+ $(subst $(SPACE),;, $(foreach p, $(sort $(dir $(wildcard \
+ $(addprefix $(SYMBOLS_IMAGE_DIR)/bin/, *.pdb */*.pdb)))), $(call FixPath, $p)))
+ export _NT_SYMBOL_PATH
+ $(info _NT_SYMBOL_PATH $(_NT_SYMBOL_PATH))
+ endif
+endif
+
################################################################################
# Hook to include the corresponding custom file, if present.
$(eval $(call IncludeCustomExtension, RunTests.gmk))
@@ -496,6 +508,11 @@ define SetupRunJtregTestBody
$1_JTREG_BASIC_OPTIONS += -e:JIB_DATA_DIR
# Some tests needs to find a boot JDK using the JDK8_HOME variable.
$1_JTREG_BASIC_OPTIONS += -e:JDK8_HOME=$$(BOOT_JDK)
+ # If running on Windows, propagate the _NT_SYMBOL_PATH to enable
+ # symbol lookup in hserr files
+ ifeq ($$(OPENJDK_TARGET_OS), windows)
+ $1_JTREG_BASIC_OPTIONS += -e:_NT_SYMBOL_PATH
+ endif
$1_JTREG_BASIC_OPTIONS += \
$$(addprefix -javaoption:, $$(JTREG_JAVA_OPTIONS)) \
diff --git a/make/RunTestsPrebuilt.gmk b/make/RunTestsPrebuilt.gmk
index ca5bc6f49e7..2660e766e25 100644
--- a/make/RunTestsPrebuilt.gmk
+++ b/make/RunTestsPrebuilt.gmk
@@ -113,6 +113,7 @@ $(eval $(call SetupVariable,JT_HOME))
# These can have default values based on the ones above
$(eval $(call SetupVariable,JDK_IMAGE_DIR,$(OUTPUTDIR)/images/jdk))
$(eval $(call SetupVariable,TEST_IMAGE_DIR,$(OUTPUTDIR)/images/test))
+$(eval $(call SetupVariable,SYMBOLS_IMAGE_DIR,$(OUTPUTDIR)/images/symbols))
# Provide default values for tools that we need
$(eval $(call SetupVariable,MAKE,make,NO_CHECK))
@@ -245,6 +246,7 @@ $(call CreateNewSpec, $(NEW_SPEC), \
JT_HOME := $(JT_HOME), \
JDK_IMAGE_DIR := $(JDK_IMAGE_DIR), \
TEST_IMAGE_DIR := $(TEST_IMAGE_DIR), \
+ SYMBOLS_IMAGE_DIR := $(SYMBOLS_IMAGE_DIR), \
MAKE := $(MAKE), \
BASH := $(BASH), \
JIB_JAR := $(JIB_JAR), \
diff --git a/make/UpdateX11Wrappers.gmk b/make/UpdateX11Wrappers.gmk
new file mode 100644
index 00000000000..2dea0ab4803
--- /dev/null
+++ b/make/UpdateX11Wrappers.gmk
@@ -0,0 +1,101 @@
+#
+# Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+################################################################################
+
+default: all
+
+include $(SPEC)
+include MakeBase.gmk
+include NativeCompilation.gmk
+include ToolsJdk.gmk
+
+################################################################################
+# This file is responsible for extracting the x11 native struct offsets to
+# the xawt Java library. The tool needs to be run on the os/arch that
+# will host the final jvm, thus the tool cannot be used when cross compiling.
+#
+# Two versions of the generated offset file, sizes-32.txt and sizes-64.txt are
+# committed into the source code repository. These are the ones used in
+# GensrcX11Wrappers.gmk to generate the Java code during the build.
+################################################################################
+
+ifeq ($(COMPILE_TYPE), cross)
+ $(error It is not possible to update the x11wrappers when cross-compiling)
+endif
+
+X11WRAPPERS_OUTPUT := $(SUPPORT_OUTPUTDIR)/x11wrappers
+
+GENSRC_X11WRAPPERS_DATADIR := $(TOPDIR)/make/data/x11wrappergen
+
+BITS := $(OPENJDK_TARGET_CPU_BITS)
+
+# Generate the C code for the program that will output the offset file.
+$(X11WRAPPERS_OUTPUT)/src/data_generator.c: $(GENSRC_X11WRAPPERS_DATADIR)/xlibtypes.txt $(BUILD_TOOLS_JDK)
+ $(call LogInfo, Generating X11 wrapper data generator source code)
+ $(call MakeDir, $(@D))
+ $(call ExecuteWithLog, $@, \
+ $(TOOL_WRAPPERGENERATOR) gen_c_source $@ $(GENSRC_X11WRAPPERS_DATADIR)/xlibtypes.txt $(BITS))
+
+DATA_GENERATOR_INCLUDES := \
+ -I$(TOPDIR)/src/hotspot/share/include \
+ -I$(TOPDIR)/src/hotspot/os/$(HOTSPOT_TARGET_OS_TYPE)/include \
+ -I$(SUPPORT_OUTPUTDIR)/modules_include/java.base \
+ -I$(SUPPORT_OUTPUTDIR)/modules_include/java.base/$(OPENJDK_TARGET_OS_INCLUDE_SUBDIR) \
+ -I$(TOPDIR)/src/java.base/share/native/libjava \
+ -I$(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjava \
+ -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \
+ -I$(TOPDIR)/src/java.desktop/share/native/common/awt/debug \
+ -I$(TOPDIR)/src/java.desktop/share/native/libawt/awt/image/cvutils \
+ #
+
+# Compile the generated C code into an executable.
+$(eval $(call SetupNativeCompilation, BUILD_DATA_GENERATOR, \
+ PROGRAM := data_generator, \
+ OUTPUT_DIR := $(X11WRAPPERS_OUTPUT)/bin, \
+ EXTRA_FILES := $(X11WRAPPERS_OUTPUT)/src/data_generator.c, \
+ CFLAGS := $(X_CFLAGS) $(DATA_GENERATOR_INCLUDES) $(CFLAGS_JDKEXE), \
+ LDFLAGS := $(LDFLAGS_JDKEXE), \
+ LIBS := $(X_LIBS), \
+ OBJECT_DIR := $(X11WRAPPERS_OUTPUT)/objs, \
+))
+
+# Run the executable to create the data file.
+$(GENSRC_X11WRAPPERS_DATADIR)/sizes-$(BITS).txt: $(BUILD_DATA_GENERATOR_TARGET)
+ $(call LogInfo, Generating X11 wrapper data files)
+ $(call MakeDir, $(@D))
+ $(call ExecuteWithLog, $(X11WRAPPERS_OUTPUT)/generation, \
+ $(BUILD_DATA_GENERATOR_TARGET) | $(SORT) > $@)
+ $(ECHO) IMPORTANT: If you update the X11 wrapper data files, they most certainly
+ $(ECHO) need to be updated for both 32 and 64 bit platforms. You have now
+ $(ECHO) updated them for $(BITS) bit platforms only.
+
+TARGETS += $(GENSRC_X11WRAPPERS_DATADIR)/sizes-$(BITS).txt
+
+################################################################################
+
+all: $(TARGETS)
+
+.PHONY: all default
diff --git a/make/autoconf/boot-jdk.m4 b/make/autoconf/boot-jdk.m4
index 3e0ed35cbcf..b1e8c41dc18 100644
--- a/make/autoconf/boot-jdk.m4
+++ b/make/autoconf/boot-jdk.m4
@@ -77,10 +77,11 @@ AC_DEFUN([BOOTJDK_DO_CHECK],
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 '\"10([\.+-].*)?\"|\"9([\.+-].*)?\"'`]
+ [FOUND_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION \
+ | $EGREP "\"(${DEFAULT_ACCEPTABLE_BOOT_VERSIONS// /|})([\.+-].*)?\""`]
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 9 or 10)])
+ AC_MSG_NOTICE([(Your Boot JDK version must be one of: $DEFAULT_ACCEPTABLE_BOOT_VERSIONS)])
BOOT_JDK_FOUND=no
else
# We're done! :-)
@@ -510,10 +511,10 @@ AC_DEFUN([BOOTJDK_CHECK_BUILD_JDK],
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 '\"10([\.+-].*)?\"'`]
+ [FOUND_CORRECT_VERSION=`echo $BUILD_JDK_VERSION | $EGREP "\"$VERSION_FEATURE([\.+-].*)?\""`]
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 10)])
+ AC_MSG_NOTICE([(Your Build JDK must be version $VERSION_FEATURE)])
BUILD_JDK_FOUND=no
else
# We're done!
diff --git a/make/autoconf/configure.ac b/make/autoconf/configure.ac
index 8469fcc789d..bfa3de31957 100644
--- a/make/autoconf/configure.ac
+++ b/make/autoconf/configure.ac
@@ -163,10 +163,9 @@ 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
+# The global flags are needed for configure to be able to run the compilers
+# correctly.
+FLAGS_PRE_TOOLCHAIN
# Then detect the actual binaries needed
TOOLCHAIN_PRE_DETECTION
@@ -184,17 +183,15 @@ TOOLCHAIN_SETUP_JTREG
# Setup Jib dependency tool
TOOLCHAIN_SETUP_JIB
-FLAGS_SETUP_INIT_FLAGS
+# After toolchain setup, we need to process some flags to be able to continue.
+FLAGS_POST_TOOLCHAIN
# 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
+FLAGS_SETUP_FLAGS
# Setup debug symbols (need objcopy from the toolchain for that)
JDKOPT_SETUP_DEBUG_SYMBOLS
diff --git a/make/autoconf/flags-cflags.m4 b/make/autoconf/flags-cflags.m4
new file mode 100644
index 00000000000..8e8d0b5eb0c
--- /dev/null
+++ b/make/autoconf/flags-cflags.m4
@@ -0,0 +1,840 @@
+#
+# Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+################################################################################
+#
+# Setup flags for C/C++ compiler
+#
+
+###############################################################################
+#
+# How to compile shared libraries.
+#
+AC_DEFUN([FLAGS_SETUP_SHARED_LIBS],
+[
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ C_FLAG_REORDER=''
+
+ # 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'
+
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ C_FLAG_REORDER=''
+
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ # Linking is different on MacOSX
+ SHARED_LIBRARY_FLAGS="-dynamiclib -compatibility_version 1.0.0 -current_version 1.0.0"
+ 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_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
+ C_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
+ C_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
+ C_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(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)
+])
+
+AC_DEFUN([FLAGS_SETUP_DEBUG_SYMBOLS],
+[
+ # Debug symbols
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ CFLAGS_DEBUG_SYMBOLS="-g"
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ CFLAGS_DEBUG_SYMBOLS="-g"
+ elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ # -g0 enables debug symbols without disabling inlining.
+ CFLAGS_DEBUG_SYMBOLS="-g0 -xs"
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ CFLAGS_DEBUG_SYMBOLS="-g"
+ elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ CFLAGS_DEBUG_SYMBOLS="-Z7 -d2Zi+"
+ fi
+
+ AC_SUBST(CFLAGS_DEBUG_SYMBOLS)
+])
+
+AC_DEFUN([FLAGS_SETUP_WARNINGS],
+[
+ 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)
+ DISABLE_WARNING_PREFIX="-Wno-"
+ CFLAGS_WARNINGS_ARE_ERRORS="-Werror"
+ # Repeate the check for the BUILD_CC and BUILD_CXX. Need to also reset
+ # CFLAGS since any target specific flags will likely not work with the
+ # build compiler
+ CC_OLD="$CC"
+ CXX_OLD="$CXX"
+ CC="$BUILD_CC"
+ CXX="$BUILD_CXX"
+ CFLAGS_OLD="$CFLAGS"
+ CFLAGS=""
+ BUILD_CC_DISABLE_WARNING_PREFIX="-Wno-"
+ 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)
+])
+
+AC_DEFUN([FLAGS_SETUP_QUALITY_CHECKS],
+[
+ # 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.
+ CFLAGS_DEBUG_OPTIONS="-fstack-protector-all --param ssp-buffer-size=1"
+ CXXFLAGS_DEBUG_OPTIONS="-fstack-protector-all --param ssp-buffer-size=1"
+
+ JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -fstack-protector-all --param ssp-buffer-size=1"
+ ;;
+ esac
+ fi
+])
+
+AC_DEFUN([FLAGS_SETUP_OPTIMIZATION],
+[
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ CC_HIGHEST="-fns -fsimple -fsingle -xbuiltin=%all -xdepend -xrestrict -xlibmil"
+
+ C_O_FLAG_HIGHEST_JVM="-xO4"
+ C_O_FLAG_DEBUG_JVM=""
+ C_O_FLAG_SIZE=""
+ C_O_FLAG_DEBUG=""
+ C_O_FLAG_NONE=""
+ if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86"; then
+ C_O_FLAG_HIGHEST="-xO4 -Wu,-O4~yz $CC_HIGHEST"
+ C_O_FLAG_HI="-xO4 -Wu,-O4~yz"
+ C_O_FLAG_NORM="-xO2 -Wu,-O2~yz"
+ elif test "x$OPENJDK_TARGET_CPU_ARCH" = "xsparc"; then
+ C_O_FLAG_HIGHEST="-xO4 -Wc,-Qrm-s -Wc,-Qiselect-T0 \
+ -xprefetch=auto,explicit -xchip=ultra $CC_HIGHEST"
+ C_O_FLAG_HI="-xO4 -Wc,-Qrm-s -Wc,-Qiselect-T0"
+ C_O_FLAG_NORM="-xO2 -Wc,-Qrm-s -Wc,-Qiselect-T0"
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xgcc; then
+ 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"
+ C_O_FLAG_DEBUG="-O0"
+ C_O_FLAG_DEBUG_JVM="-O0"
+ 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_DEBUG_JVM=""
+ 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_DEBUG_JVM="-O0"
+ fi
+ C_O_FLAG_SIZE="-Os"
+ C_O_FLAG_DEBUG="-O0"
+ 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
+
+ # Now copy to C++ flags
+ 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"
+
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ # In solstudio, also add this to C (but not C++) flags...
+ C_O_FLAG_HIGHEST="$C_O_FLAG_HIGHEST -xalias_level=basic"
+ 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_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_NONE)
+ AC_SUBST(CXX_O_FLAG_SIZE)
+])
+
+AC_DEFUN([FLAGS_SETUP_CFLAGS],
+[
+ ### CFLAGS
+
+ FLAGS_SETUP_CFLAGS_HELPER
+
+ FLAGS_OS=$OPENJDK_TARGET_OS
+ FLAGS_OS_TYPE=$OPENJDK_TARGET_OS_TYPE
+ FLAGS_CPU=$OPENJDK_TARGET_CPU
+ FLAGS_CPU_ARCH=$OPENJDK_TARGET_CPU_ARCH
+ FLAGS_CPU_BITS=$OPENJDK_TARGET_CPU_BITS
+ FLAGS_CPU_ENDIAN=$OPENJDK_TARGET_CPU_ENDIAN
+ FLAGS_CPU_LEGACY=$OPENJDK_TARGET_CPU_LEGACY
+ FLAGS_CPU_LEGACY_LIB=$OPENJDK_TARGET_CPU_LEGACY_LIB
+
+ FLAGS_SETUP_CFLAGS_CPU_DEP([TARGET])
+
+ FLAGS_OS=$OPENJDK_BUILD_OS
+ FLAGS_OS_TYPE=$OPENJDK_BUILD_OS_TYPE
+ FLAGS_CPU=$OPENJDK_BUILD_CPU
+ FLAGS_CPU_ARCH=$OPENJDK_BUILD_CPU_ARCH
+ FLAGS_CPU_BITS=$OPENJDK_BUILD_CPU_BITS
+ FLAGS_CPU_ENDIAN=$OPENJDK_BUILD_CPU_ENDIAN
+ FLAGS_CPU_LEGACY=$OPENJDK_BUILD_CPU_LEGACY
+ FLAGS_CPU_LEGACY_LIB=$OPENJDK_BUILD_CPU_LEGACY_LIB
+
+ FLAGS_SETUP_CFLAGS_CPU_DEP([BUILD], [OPENJDK_BUILD_])
+
+ # Tests are only ever compiled for TARGET
+ CFLAGS_TESTLIB="$CFLAGS_JDKLIB"
+ CXXFLAGS_TESTLIB="$CXXFLAGS_JDKLIB"
+ CFLAGS_TESTEXE="$CFLAGS_JDKEXE"
+ CXXFLAGS_TESTEXE="$CXXFLAGS_JDKEXE"
+
+ AC_SUBST(CFLAGS_TESTLIB)
+ AC_SUBST(CFLAGS_TESTEXE)
+ AC_SUBST(CXXFLAGS_TESTLIB)
+ AC_SUBST(CXXFLAGS_TESTEXE)
+])
+
+################################################################################
+# platform independent
+AC_DEFUN([FLAGS_SETUP_CFLAGS_HELPER],
+[
+ #### OS DEFINES, these should be independent on toolchain
+ if test "x$OPENJDK_TARGET_OS" = xlinux; then
+ CFLAGS_OS_DEF_JVM="-DLINUX"
+ CFLAGS_OS_DEF_JDK="-D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE"
+ elif test "x$OPENJDK_TARGET_OS" = xsolaris; then
+ CFLAGS_OS_DEF_JVM="-DSOLARIS"
+ CFLAGS_OS_DEF_JDK="-D__solaris__"
+ elif test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ CFLAGS_OS_DEF_JVM="-D_ALLBSD_SOURCE -D_DARWIN_C_SOURCE -D_XOPEN_SOURCE"
+ CFLAGS_OS_DEF_JDK="-D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT"
+ elif test "x$OPENJDK_TARGET_OS" = xaix; then
+ CFLAGS_OS_DEF_JVM="-DAIX"
+ elif test "x$OPENJDK_TARGET_OS" = xbsd; then
+ CFLAGS_OS_DEF_JDK="-D_ALLBSD_SOURCE"
+ elif test "x$OPENJDK_TARGET_OS" = xwindows; then
+ CFLAGS_OS_DEF_JVM="-D_WINDOWS -DWIN32 -D_JNI_IMPLEMENTATION_"
+ fi
+
+ # Setup target OS define. Use OS target name but in upper case.
+ OPENJDK_TARGET_OS_UPPERCASE=`$ECHO $OPENJDK_TARGET_OS | $TR 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ CFLAGS_OS_DEF_JDK="$CFLAGS_OS_DEF_JDK -D$OPENJDK_TARGET_OS_UPPERCASE"
+
+ #### GLOBAL DEFINES
+ # Set some common defines. These works for all compilers, but assume
+ # -D is universally accepted.
+
+ # Always enable optional macros for VM.
+ ALWAYS_CFLAGS_JVM="-D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS"
+
+ # Setup some hard coded includes
+ ALWAYS_CFLAGS_JDK=" \
+ -I\$(SUPPORT_OUTPUTDIR)/modules_include/java.base \
+ -I\$(SUPPORT_OUTPUTDIR)/modules_include/java.base/\$(OPENJDK_TARGET_OS_INCLUDE_SUBDIR) \
+ -I${TOPDIR}/src/java.base/share/native/libjava \
+ -I${TOPDIR}/src/java.base/$OPENJDK_TARGET_OS_TYPE/native/libjava \
+ -I${TOPDIR}/src/hotspot/share/include \
+ -I${TOPDIR}/src/hotspot/os/${HOTSPOT_TARGET_OS_TYPE}/include"
+
+ ###############################################################################
+
+ # Adjust flags according to debug level.
+ # Setup debug/release defines
+ if test "x$DEBUG_LEVEL" = xrelease; then
+ DEBUG_CFLAGS_JDK="-DNDEBUG"
+ if test "x$OPENJDK_TARGET_OS" = xsolaris; then
+ DEBUG_CFLAGS_JDK="$DEBUG_CFLAGS_JDK -DTRIMMED"
+ fi
+ else
+ DEBUG_CFLAGS_JDK="-DDEBUG"
+
+ if test "x$TOOLCHAIN_TYPE" = xxlc; then
+ # We need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows.
+ # Hotspot now overflows its 64K TOC (currently only for debug),
+ # so for debug we build with '-qpic=large -bbigtoc'.
+ DEBUG_CFLAGS_JVM="-qpic=large"
+ fi
+ fi
+
+ if test "x$DEBUG_LEVEL" != xrelease; then
+ DEBUG_OPTIONS_FLAGS_JDK="$CFLAGS_DEBUG_OPTIONS"
+ DEBUG_SYMBOLS_CFLAGS_JDK="$CFLAGS_DEBUG_SYMBOLS"
+ fi
+
+ #### TOOLCHAIN DEFINES
+
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ ALWAYS_DEFINES_JVM="-D_GNU_SOURCE -D_REENTRANT"
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ ALWAYS_DEFINES_JVM="-D_GNU_SOURCE"
+ elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ ALWAYS_DEFINES_JVM="-DSPARC_WORKS -D_Crun_inline_placement"
+ ALWAYS_DEFINES_JDK="-DTRACING -DMACRO_MEMSYS_OPS -DBREAKPTS"
+ ALWAYS_DEFINES_JDK_CXXONLY="-DCC_NOEX"
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ ALWAYS_DEFINES_JVM="-D_REENTRANT"
+ ALWAYS_DEFINES_JDK="-D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC"
+ elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ ALWAYS_DEFINES_JDK="-DWIN32_LEAN_AND_MEAN -D_CRT_SECURE_NO_DEPRECATE \
+ -D_CRT_NONSTDC_NO_DEPRECATE -DWIN32 -DIAL"
+ fi
+
+ ###############################################################################
+ #
+ #
+ # CFLAGS BASIC
+ if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
+ # COMMON to gcc and clang
+ TOOLCHAIN_CFLAGS_JVM="-pipe -fno-rtti -fno-exceptions \
+ -fvisibility=hidden -fno-strict-aliasing -fno-omit-frame-pointer"
+ fi
+
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ TOOLCHAIN_CFLAGS_JVM="$TOOLCHAIN_CFLAGS_JVM -fcheck-new"
+ TOOLCHAIN_CFLAGS_JDK="-pipe"
+ TOOLCHAIN_CFLAGS_JDK_CONLY="-fno-strict-aliasing" # technically NOT for CXX (but since this gives *worse* performance, use no-strict-aliasing everywhere!)
+
+ CXXSTD_CXXFLAG="-std=gnu++98"
+ FLAGS_CXX_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$CXXSTD_CXXFLAG -Werror],
+ IF_FALSE: [CXXSTD_CXXFLAG=""])
+ TOOLCHAIN_CFLAGS_JDK_CXXONLY="$CXXSTD_CXXFLAG"
+ TOOLCHAIN_CFLAGS_JVM="$TOOLCHAIN_CFLAGS_JVM $CXXSTD_CXXFLAG"
+ ADLC_CXXFLAG="$CXXSTD_CXXFLAG"
+
+
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ # 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)
+ TOOLCHAIN_CFLAGS_JVM="$TOOLCHAIN_CFLAGS_JVM -flimit-debug-info"
+
+ if test "x$OPENJDK_TARGET_OS" = xlinux; then
+ TOOLCHAIN_CFLAGS_JDK="-pipe"
+ TOOLCHAIN_CFLAGS_JDK_CONLY="-fno-strict-aliasing" # technically NOT for CXX
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ TOOLCHAIN_CFLAGS_JDK="-mt"
+ TOOLCHAIN_CFLAGS_JDK_CONLY="-xc99=%none -xCC -Xa -v -W0,-noglobal" # C only
+ TOOLCHAIN_CFLAGS_JDK_CXXONLY="-features=no%except -norunpath -xnolib" # CXX only
+ TOOLCHAIN_CFLAGS_JVM="-template=no%extdef -features=no%split_init \
+ -library=stlport4 -mt -features=no%except"
+ if test "x$DEBUG_LEVEL" = xslowdebug; then
+ # Previously -g was used instead of -g0 for slowdebug; this is equivalent
+ # to setting +d.
+ TOOLCHAIN_CFLAGS_JVM="$TOOLCHAIN_CFLAGS_JVM +d"
+ fi
+
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ TOOLCHAIN_CFLAGS_JDK="-qchars=signed -qfullpath -qsaveopt" # add on both CFLAGS
+ TOOLCHAIN_CFLAGS_JVM="-qtune=balanced \
+ -qalias=noansi -qstrict -qtls=default -qlanglvl=c99vla \
+ -qlanglvl=noredefmac -qnortti -qnoeh -qignerrno"
+ elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ TOOLCHAIN_CFLAGS_JVM="-nologo -MD -MP"
+ TOOLCHAIN_CFLAGS_JDK="-nologo -MD -Zc:wchar_t-"
+ fi
+
+ # CFLAGS WARNINGS STUFF
+ # Set JVM_CFLAGS warning handling
+ if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
+ # COMMON to gcc and clang
+ WARNING_CFLAGS_JVM="-Wpointer-arith -Wsign-compare -Wunused-function"
+ if ! HOTSPOT_CHECK_JVM_VARIANT(zero); then
+ # Non-zero builds have stricter warnings
+ WARNING_CFLAGS_JVM="$WARNING_CFLAGS_JVM -Wundef -Wformat=2"
+ fi
+
+ fi
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ WARNING_CFLAGS_JDK="-Wall -Wextra -Wno-unused -Wno-unused-parameter -Wformat=2"
+ WARNING_CFLAGS_JVM="$WARNING_CFLAGS_JVM -Wunused-value -Woverloaded-virtual"
+
+ if ! HOTSPOT_CHECK_JVM_VARIANT(zero); then
+ # Non-zero builds have stricter warnings
+ WARNING_CFLAGS_JVM="$WARNING_CFLAGS_JVM -Wreturn-type"
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ WARNING_CFLAGS_JVM="$WARNING_CFLAGS_JVM -Wno-deprecated"
+ if test "x$OPENJDK_TARGET_OS" = xlinux; then
+ WARNING_CFLAGS_JVM="$WARNING_CFLAGS_JVM -Wno-sometimes-uninitialized"
+ WARNING_CFLAGS_JDK="-Wall -Wextra -Wno-unused -Wno-unused-parameter -Wformat=2"
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ WARNING_CFLAGS_JDK_CONLY="-errshort=tags"
+ WARNING_CFLAGS_JDK_CXXONLY="+w"
+ WARNING_CFLAGS_JDK="-errtags=yes -errfmt"
+ elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ WARNING_CFLAGS="-W3"
+ WARNING_CFLAGS_JDK="-wd4800"
+ fi
+
+ # Set some additional per-OS defines.
+
+ # Additional macosx handling
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ OS_CFLAGS="-DMAC_OS_X_VERSION_MIN_REQUIRED=$MACOSX_VERSION_MIN_NODOTS \
+ -mmacosx-version-min=$MACOSX_VERSION_MIN"
+
+ if test -n "$MACOSX_VERSION_MAX"; then
+ OS_CFLAGS="$OS_CFLAGS \
+ -DMAC_OS_X_VERSION_MAX_ALLOWED=$MACOSX_VERSION_MAX_NODOTS"
+ fi
+ fi
+
+ # Where does this really belong??
+ if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
+ PICFLAG="-fPIC"
+ elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ PICFLAG="-KPIC"
+ 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"
+ elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ PICFLAG=""
+ fi
+
+ JVM_PICFLAG="$PICFLAG"
+ JDK_PICFLAG="$PICFLAG"
+
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ # Linking is different on MacOSX
+ JDK_PICFLAG=''
+ if test "x$STATIC_BUILD" = xtrue; then
+ JVM_PICFLAG=""
+ fi
+ fi
+
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ OS_CFLAGS_JVM="$OS_CFLAGS_JVM -mno-omit-leaf-frame-pointer -mstack-alignment=16"
+ fi
+
+ # Optional POSIX functionality needed by the JVM
+ #
+ # Check if clock_gettime is available and in which library. This indicates
+ # availability of CLOCK_MONOTONIC for hotspot. But we don't need to link, so
+ # don't let it update LIBS.
+ save_LIBS="$LIBS"
+ AC_SEARCH_LIBS(clock_gettime, rt, [HAS_CLOCK_GETTIME=true], [])
+ if test "x$LIBS" = "x-lrt "; then
+ CLOCK_GETTIME_IN_LIBRT=true
+ fi
+ LIBS="$save_LIBS"
+
+ if test "x$HAS_CLOCK_GETTIME" = "xtrue"; then
+ OS_CFLAGS_JVM="$OS_CFLAGS_JVM -DSUPPORTS_CLOCK_MONOTONIC"
+ if test "x$CLOCK_GETTIME_IN_LIBRT" = "xtrue"; then
+ OS_CFLAGS_JVM="$OS_CFLAGS_JVM -DNEEDS_LIBRT"
+ fi
+ fi
+
+ # EXPORT
+ AC_SUBST(ADLC_CXXFLAG)
+])
+
+################################################################################
+# $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_CFLAGS_CPU_DEP],
+[
+ #### CPU DEFINES, these should (in theory) be independent on toolchain
+
+ # Setup target CPU
+ # Setup endianness
+ if test "x$FLAGS_CPU_ENDIAN" = xlittle; then
+ $1_DEFINES_CPU_JVM="-DVM_LITTLE_ENDIAN"
+ fi
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ # The macro _LITTLE_ENDIAN needs to be defined the same to avoid the
+ # Sun C compiler warning message: warning: macro redefined: _LITTLE_ENDIAN
+ if test "x$FLAGS_CPU_ENDIAN" = xlittle; then
+ $1_DEFINES_CPU_JDK="-D_LITTLE_ENDIAN="
+ else
+ $1_DEFINES_CPU_JDK="-D_BIG_ENDIAN="
+ fi
+ else
+ if test "x$FLAGS_CPU_ENDIAN" = xlittle; then
+ $1_DEFINES_CPU_JDK="-D_LITTLE_ENDIAN"
+ else
+ $1_DEFINES_CPU_JDK="-D_BIG_ENDIAN"
+ fi
+ fi
+
+ # setup CPU bit size
+ $1_DEFINES_CPU_JDK="${$1_DEFINES_CPU_JDK} -DARCH='\"$FLAGS_CPU_LEGACY\"' \
+ -D$FLAGS_CPU_LEGACY"
+
+ if test "x$FLAGS_CPU_BITS" = x64; then
+ # -D_LP64=1 is only set on linux and mac. Setting on windows causes diff in
+ # unpack200.exe.
+ if test "x$FLAGS_OS" = xlinux || test "x$FLAGS_OS" = xmacosx; then
+ $1_DEFINES_CPU_JDK="${$1_DEFINES_CPU_JDK} -D_LP64=1"
+ fi
+ if test "x$FLAGS_OS" != xsolaris && test "x$FLAGS_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.
+ $1_DEFINES_CPU_JVM="${$1_DEFINES_CPU_JVM} -D_LP64=1"
+ fi
+ fi
+
+ # toolchain dependend, per-cpu
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ if test "x$FLAGS_CPU_ARCH" = xx86; then
+ $1_DEFINES_CPU_JDK="${$1_DEFINES_CPU_JDK} -DcpuIntel -Di586 -D$FLAGS_CPU_LEGACY_LIB"
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ if test "x$FLAGS_CPU" = xx86_64; then
+ $1_DEFINES_CPU_JDK="${$1_DEFINES_CPU_JDK} -D_AMD64_ -Damd64"
+ else
+ $1_DEFINES_CPU_JDK="${$1_DEFINES_CPU_JDK} -D_X86_ -Dx86"
+ fi
+ fi
+
+ # CFLAGS PER CPU
+ if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
+ # COMMON to gcc and clang
+ if test "x$FLAGS_CPU" = xx86; then
+ # Force compatibility with i586 on 32 bit intel platforms.
+ $1_CFLAGS_CPU="-march=i586"
+ fi
+ fi
+
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ if test "x$FLAGS_CPU" = xarm; then
+ # -Wno-psabi to get rid of annoying "note: the mangling of 'va_list' has changed in GCC 4.4"
+ $1_CFLAGS_CPU="-fsigned-char -Wno-psabi $ARM_ARCH_TYPE_FLAGS $ARM_FLOAT_TYPE_FLAGS -DJDK_ARCH_ABI_PROP_NAME='\"\$(JDK_ARCH_ABI_PROP_NAME)\"'"
+ $1_CFLAGS_CPU_JVM="-DARM"
+ elif test "x$FLAGS_CPU" = xaarch64; then
+ if test "x$HOTSPOT_TARGET_CPU_PORT" = xarm64; then
+ $1_CFLAGS_CPU_JVM="-fsigned-char -DARM"
+ fi
+ elif test "x$FLAGS_CPU_ARCH" = xppc; then
+ $1_CFLAGS_CPU_JVM="-minsert-sched-nops=regroup_exact -mno-multiple -mno-string"
+ if test "x$FLAGS_CPU" = xppc64; then
+ # -mminimal-toc fixes `relocation truncated to fit' error for gcc 4.1.
+ # Use ppc64 instructions, but schedule for power5
+ $1_CFLAGS_CPU_JVM="${$1_CFLAGS_CPU_JVM} -mminimal-toc -mcpu=powerpc64 -mtune=power5"
+ elif test "x$FLAGS_CPU" = xppc64le; then
+ # Little endian machine uses ELFv2 ABI.
+ # Use Power8, this is the first CPU to support PPC64 LE with ELFv2 ABI.
+ $1_CFLAGS_CPU_JVM="${$1_CFLAGS_CPU_JVM} -DABI_ELFv2 -mcpu=power8 -mtune=power8"
+ fi
+ elif test "x$FLAGS_CPU" = xs390x; then
+ $1_CFLAGS_CPU="-mbackchain -march=z10"
+ fi
+
+ if test "x$FLAGS_CPU_ARCH" != xarm && test "x$FLAGS_CPU_ARCH" != xppc; then
+ # for all archs except arm and ppc, prevent gcc to omit frame pointer
+ $1_CFLAGS_CPU_JDK="${$1_CFLAGS_CPU_JDK} -fno-omit-frame-pointer"
+ fi
+
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ if test "x$FLAGS_OS" = xlinux; then
+ # ppc test not really needed for clang
+ if test "x$FLAGS_CPU_ARCH" != xarm && test "x$FLAGS_CPU_ARCH" != xppc; then
+ # for all archs except arm and ppc, prevent gcc to omit frame pointer
+ $1_CFLAGS_CPU_JDK="${$1_CFLAGS_CPU_JDK} -fno-omit-frame-pointer"
+ fi
+ fi
+
+ elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ if test "x$FLAGS_CPU" = xx86_64; then
+ # NOTE: -xregs=no%frameptr is supposed to be default on x64
+ $1_CFLAGS_CPU_JDK="-xregs=no%frameptr"
+ elif test "x$FLAGS_CPU" = xsparcv9; then
+ $1_CFLAGS_CPU_JVM="-xarch=sparc"
+ $1_CFLAGS_CPU_JDK_LIBONLY="-xregs=no%appl"
+ fi
+
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ if test "x$FLAGS_CPU" = xppc64; then
+ $1_CFLAGS_CPU_JVM="-qarch=ppc64"
+ fi
+
+ elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ if test "x$FLAGS_CPU" = xx86; then
+ $1_CFLAGS_CPU_JVM="-arch:IA32"
+ elif test "x$OPENJDK_TARGET_CPU" = xx86_64; then
+ if test "x$DEBUG_LEVEL" != xrelease; then
+ # NOTE: This is probably redundant; -homeparams is default on
+ # non-release builds.
+ $1_CFLAGS_CPU_JVM="-homeparams"
+ fi
+ fi
+ fi
+
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ TOOLCHAIN_CHECK_COMPILER_VERSION(VERSION: 6, PREFIX: $2, IF_AT_LEAST: FLAGS_SETUP_GCC6_COMPILER_FLAGS($1))
+ $1_TOOLCHAIN_CFLAGS="${$1_GCC6_CFLAGS}"
+
+ $1_WARNING_CFLAGS_JVM="-Wno-format-zero-length -Wtype-limits -Wuninitialized"
+ fi
+
+ # EXPORT to API
+ CFLAGS_JVM_COMMON="$ALWAYS_CFLAGS_JVM $ALWAYS_DEFINES_JVM $TOOLCHAIN_CFLAGS_JVM \
+ $OS_CFLAGS $OS_CFLAGS_JVM $CFLAGS_OS_DEF_JVM $DEBUG_CFLAGS_JVM \
+ $WARNING_CFLAGS $WARNING_CFLAGS_JVM $JVM_PICFLAG"
+
+ CFLAGS_JDK_COMMON="$ALWAYS_CFLAGS_JDK $ALWAYS_DEFINES_JDK $TOOLCHAIN_CFLAGS_JDK \
+ $OS_CFLAGS $CFLAGS_OS_DEF_JDK $DEBUG_CFLAGS_JDK $DEBUG_OPTIONS_FLAGS_JDK \
+ $WARNING_CFLAGS $WARNING_CFLAGS_JDK $DEBUG_SYMBOLS_CFLAGS_JDK"
+
+ # Use ${$2EXTRA_CFLAGS} to block EXTRA_CFLAGS to be added to build flags.
+ # (Currently we don't have any OPENJDK_BUILD_EXTRA_CFLAGS, but that might
+ # change in the future.)
+
+ CFLAGS_JDK_COMMON_CONLY="$TOOLCHAIN_CFLAGS_JDK_CONLY \
+ $WARNING_CFLAGS_JDK_CONLY ${$2EXTRA_CFLAGS}"
+ CFLAGS_JDK_COMMON_CXXONLY="$ALWAYS_DEFINES_JDK_CXXONLY $TOOLCHAIN_CFLAGS_JDK_CXXONLY \
+ $WARNING_CFLAGS_JDK_CXXONLY ${$2EXTRA_CXXFLAGS}"
+
+ $1_CFLAGS_JVM="${$1_DEFINES_CPU_JVM} ${$1_CFLAGS_CPU} ${$1_CFLAGS_CPU_JVM} ${$1_TOOLCHAIN_CFLAGS} ${$1_WARNING_CFLAGS_JVM}"
+ $1_CFLAGS_JDK="${$1_DEFINES_CPU_JDK} ${$1_CFLAGS_CPU} ${$1_CFLAGS_CPU_JDK} ${$1_TOOLCHAIN_CFLAGS}"
+
+ $2JVM_CFLAGS="$CFLAGS_JVM_COMMON ${$1_CFLAGS_JVM} ${$2EXTRA_CXXFLAGS}"
+
+ $2CFLAGS_JDKEXE="$CFLAGS_JDK_COMMON $CFLAGS_JDK_COMMON_CONLY ${$1_CFLAGS_JDK}"
+ $2CXXFLAGS_JDKEXE="$CFLAGS_JDK_COMMON $CFLAGS_JDK_COMMON_CXXONLY ${$1_CFLAGS_JDK}"
+ $2CFLAGS_JDKLIB="${$2CFLAGS_JDKEXE} $JDK_PICFLAG ${$1_CFLAGS_CPU_JDK_LIBONLY}"
+ $2CXXFLAGS_JDKLIB="${$2CXXFLAGS_JDKEXE} $JDK_PICFLAG ${$1_CFLAGS_CPU_JDK_LIBONLY}"
+
+ AC_SUBST($2JVM_CFLAGS)
+ AC_SUBST($2CFLAGS_JDKLIB)
+ AC_SUBST($2CFLAGS_JDKEXE)
+ AC_SUBST($2CXXFLAGS_JDKLIB)
+ AC_SUBST($2CXXFLAGS_JDKEXE)
+])
+
+# FLAGS_SETUP_GCC6_COMPILER_FLAGS([PREFIX])
+# Arguments:
+# $1 - 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}])
+ $1_GCC6_CFLAGS="${NO_DELETE_NULL_POINTER_CHECKS_CFLAG} ${NO_LIFETIME_DSE_CFLAG}"
+])
+
+# 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
diff --git a/make/autoconf/flags-ldflags.m4 b/make/autoconf/flags-ldflags.m4
new file mode 100644
index 00000000000..b6294084f40
--- /dev/null
+++ b/make/autoconf/flags-ldflags.m4
@@ -0,0 +1,212 @@
+#
+# Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+################################################################################
+#
+
+AC_DEFUN([FLAGS_SETUP_LDFLAGS],
+[
+ FLAGS_SETUP_LDFLAGS_HELPER
+
+ # Setup the target toolchain
+
+ # 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
+ TARGET_JVM_VARIANT_PATH=$JVM_VARIANT_MAIN
+ else
+ TARGET_JVM_VARIANT_PATH=server
+ fi
+ FLAGS_SETUP_LDFLAGS_CPU_DEP([TARGET])
+
+ # Setup the build toolchain
+
+ # When building a buildjdk, it's always only the server variant
+ BUILD_JVM_VARIANT_PATH=server
+
+ FLAGS_SETUP_LDFLAGS_CPU_DEP([BUILD], [OPENJDK_BUILD_])
+
+ LDFLAGS_TESTLIB="$LDFLAGS_JDKLIB"
+ LDFLAGS_TESTEXE="$LDFLAGS_JDKEXE ${TARGET_LDFLAGS_JDK_LIBPATH}"
+ AC_SUBST(LDFLAGS_TESTLIB)
+ AC_SUBST(LDFLAGS_TESTEXE)
+])
+
+################################################################################
+
+# CPU independent LDFLAGS setup, used for both target and build toolchain.
+AC_DEFUN([FLAGS_SETUP_LDFLAGS_HELPER],
+[
+ # Setup basic LDFLAGS
+ if 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
+ BASIC_LDFLAGS="-Wl,--hash-style=both"
+ LIBJSIG_HASHSTYLE_LDFLAGS="-Wl,--hash-style=both"
+ fi
+
+ # Add -z defs, to forbid undefined symbols in object files.
+ BASIC_LDFLAGS="$BASIC_LDFLAGS -Wl,-z,defs"
+
+ BASIC_LDFLAGS_JVM_ONLY="-Wl,-z,noexecstack -Wl,-O1 -Wl,-z,relro"
+
+ BASIC_LDFLAGS_JDK_LIB_ONLY="-Wl,-z,noexecstack"
+ LIBJSIG_NOEXECSTACK_LDFLAGS="-Wl,-z,noexecstack"
+
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ BASIC_LDFLAGS_JVM_ONLY="-mno-omit-leaf-frame-pointer -mstack-alignment=16 \
+ -stdlib=libstdc++ -fPIC"
+
+ elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ BASIC_LDFLAGS="-Wl,-z,defs"
+ BASIC_LDFLAGS_ONLYCXX="-norunpath"
+ BASIC_LDFLAGS_ONLYCXX_JDK_ONLY="-xnolib"
+
+ BASIC_LDFLAGS_JDK_ONLY="-ztext"
+ BASIC_LDFLAGS_JVM_ONLY="-library=%none -mt -z noversion"
+
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ BASIC_LDFLAGS="-b64 -brtl -bnolibpath -bexpall -bernotok -btextpsize:64K \
+ -bdatapsize:64K -bstackpsize:64K"
+ BASIC_LDFLAGS_JVM_ONLY="-Wl,-lC_r"
+
+ elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ BASIC_LDFLAGS="-nologo -opt:ref"
+ BASIC_LDFLAGS_JDK_ONLY="-incremental:no"
+ BASIC_LDFLAGS_JVM_ONLY="-opt:icf,8 -subsystem:windows -base:0x8000000"
+ fi
+
+ # Setup OS-dependent LDFLAGS
+ if test "x$TOOLCHAIN_TYPE" = xclang || test "x$TOOLCHAIN_TYPE" = xgcc; then
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ # Assume clang or gcc.
+ # FIXME: We should really generalize SET_SHARED_LIBRARY_ORIGIN instead.
+ OS_LDFLAGS_JVM_ONLY="-Wl,-rpath,@loader_path/. -Wl,-rpath,@loader_path/.."
+ OS_LDFLAGS_JDK_ONLY="-mmacosx-version-min=$MACOSX_VERSION_MIN"
+ fi
+ fi
+
+ # Setup debug level-dependent LDFLAGS
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ if test "x$OPENJDK_TARGET_OS" = xlinux; then
+ if test x$DEBUG_LEVEL = xrelease; then
+ DEBUGLEVEL_LDFLAGS_JDK_ONLY="$DEBUGLEVEL_LDFLAGS_JDK_ONLY -Wl,-O1"
+ else
+ # mark relocations read only on (fast/slow) debug builds
+ DEBUGLEVEL_LDFLAGS_JDK_ONLY="-Wl,-z,relro"
+ fi
+ if test x$DEBUG_LEVEL = xslowdebug; then
+ # do relocations at load
+ DEBUGLEVEL_LDFLAGS="-Wl,-z,now"
+ fi
+ fi
+
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ # We need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows.
+ # Hotspot now overflows its 64K TOC (currently only for debug),
+ # so we build with '-qpic=large -bbigtoc'.
+ if test "x$DEBUG_LEVEL" != xrelease; then
+ DEBUGLEVEL_LDFLAGS_JVM_ONLY="$DEBUGLEVEL_LDFLAGS_JVM_ONLY -bbigtoc"
+ fi
+ fi
+
+ # Setup LDFLAGS for linking executables
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ EXECUTABLE_LDFLAGS="$EXECUTABLE_LDFLAGS -Wl,--allow-shlib-undefined"
+ fi
+
+ # Export some intermediate variables for compatibility
+ LDFLAGS_CXX_JDK="$BASIC_LDFLAGS_ONLYCXX $BASIC_LDFLAGS_ONLYCXX_JDK_ONLY $DEBUGLEVEL_LDFLAGS_JDK_ONLY"
+ AC_SUBST(LDFLAGS_CXX_JDK)
+ AC_SUBST(LIBJSIG_HASHSTYLE_LDFLAGS)
+ AC_SUBST(LIBJSIG_NOEXECSTACK_LDFLAGS)
+])
+
+################################################################################
+# $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_LDFLAGS_CPU_DEP],
+[
+ # Setup CPU-dependent basic LDFLAGS. These can differ between the target and
+ # build toolchain.
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ if test "x${OPENJDK_$1_CPU}" = xx86; then
+ $1_CPU_LDFLAGS_JVM_ONLY="-march=i586"
+ elif test "x$OPENJDK_$1_CPU" = xarm; then
+ $1_CPU_LDFLAGS_JVM_ONLY="${$1_CPU_LDFLAGS_JVM_ONLY} -fsigned-char"
+ $1_CPU_LDFLAGS="$ARM_ARCH_TYPE_FLAGS $ARM_FLOAT_TYPE_FLAGS"
+ elif test "x$FLAGS_CPU" = xaarch64; then
+ if test "x$HOTSPOT_TARGET_CPU_PORT" = xarm64; then
+ $1_CPU_LDFLAGS_JVM_ONLY="${$1_CPU_LDFLAGS_JVM_ONLY} -fsigned-char"
+ fi
+ fi
+
+ elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ if test "x${OPENJDK_$1_CPU}" = "xsparcv9"; then
+ $1_CPU_LDFLAGS_JVM_ONLY="-xarch=sparc"
+ fi
+
+ elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ if test "x${OPENJDK_$1_CPU}" = "xx86"; then
+ $1_CPU_LDFLAGS="-safeseh"
+ # NOTE: Old build added -machine. Probably not needed.
+ $1_CPU_LDFLAGS_JVM_ONLY="-machine:I386"
+ $1_CPU_EXECUTABLE_LDFLAGS="-stack:327680"
+ else
+ $1_CPU_LDFLAGS_JVM_ONLY="-machine:AMD64"
+ $1_CPU_EXECUTABLE_LDFLAGS="-stack:1048576"
+ fi
+ fi
+
+ # JVM_VARIANT_PATH depends on if this is build or target...
+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ $1_LDFLAGS_JDK_LIBPATH="-libpath:${OUTPUTDIR}/support/modules_libs/java.base"
+ else
+ $1_LDFLAGS_JDK_LIBPATH="-L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base \
+ -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/${$1_JVM_VARIANT_PATH}"
+ fi
+
+ # Export variables according to old definitions, prefix with $2 if present.
+ LDFLAGS_JDK_COMMON="$BASIC_LDFLAGS $BASIC_LDFLAGS_JDK_ONLY \
+ $OS_LDFLAGS_JDK_ONLY $DEBUGLEVEL_LDFLAGS_JDK_ONLY ${$2EXTRA_LDFLAGS}"
+ $2LDFLAGS_JDKLIB="$LDFLAGS_JDK_COMMON $BASIC_LDFLAGS_JDK_LIB_ONLY \
+ ${$1_LDFLAGS_JDK_LIBPATH} $SHARED_LIBRARY_FLAGS"
+ $2LDFLAGS_JDKEXE="$LDFLAGS_JDK_COMMON $EXECUTABLE_LDFLAGS \
+ ${$1_CPU_EXECUTABLE_LDFLAGS}"
+
+ $2JVM_LDFLAGS="$BASIC_LDFLAGS $BASIC_LDFLAGS_JVM_ONLY $OS_LDFLAGS_JVM_ONLY \
+ $DEBUGLEVEL_LDFLAGS $DEBUGLEVEL_LDFLAGS_JVM_ONLY $BASIC_LDFLAGS_ONLYCXX \
+ ${$1_CPU_LDFLAGS} ${$1_CPU_LDFLAGS_JVM_ONLY} ${$2EXTRA_LDFLAGS}"
+
+ AC_SUBST($2LDFLAGS_JDKLIB)
+ AC_SUBST($2LDFLAGS_JDKEXE)
+
+ AC_SUBST($2JVM_LDFLAGS)
+])
diff --git a/make/autoconf/flags-other.m4 b/make/autoconf/flags-other.m4
new file mode 100644
index 00000000000..e10e5893039
--- /dev/null
+++ b/make/autoconf/flags-other.m4
@@ -0,0 +1,126 @@
+#
+# Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+################################################################################
+#
+# Setup flags for other tools than C/C++ compiler
+#
+
+AC_DEFUN([FLAGS_SETUP_ARFLAGS],
+[
+ # FIXME: figure out if we should select AR flags depending on OS or toolchain.
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ ARFLAGS="-r -mmacosx-version-min=$MACOSX_VERSION_MIN"
+ 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)
+])
+
+AC_DEFUN([FLAGS_SETUP_STRIPFLAGS],
+[
+ ## 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)
+])
+
+AC_DEFUN([FLAGS_SETUP_RCFLAGS],
+[
+ # 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_FEATURE)\" \
+ -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)
+])
+
+################################################################################
+# platform independent
+AC_DEFUN([FLAGS_SETUP_ASFLAGS],
+[
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ JVM_BASIC_ASFLAGS="-x assembler-with-cpp -mno-omit-leaf-frame-pointer -mstack-alignment=16"
+ fi
+])
+
+################################################################################
+# $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_ASFLAGS_CPU_DEP],
+[
+ # Misuse EXTRA_CFLAGS to mimic old behavior
+ $2JVM_ASFLAGS="$JVM_BASIC_ASFLAGS ${$2EXTRA_CFLAGS}"
+
+ AC_SUBST($2JVM_ASFLAGS)
+])
+
diff --git a/make/autoconf/flags.m4 b/make/autoconf/flags.m4
index 21d474f3cee..f16477278d7 100644
--- a/make/autoconf/flags.m4
+++ b/make/autoconf/flags.m4
@@ -23,6 +23,10 @@
# questions.
#
+m4_include([flags-cflags.m4])
+m4_include([flags-ldflags.m4])
+m4_include([flags-other.m4])
+
################################################################################
#
# Setup ABI profile (for arm)
@@ -94,21 +98,6 @@ AC_DEFUN([FLAGS_SETUP_ABI_PROFILE],
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
@@ -118,19 +107,58 @@ AC_DEFUN([FLAGS_SETUP_ABI_PROFILE],
fi
])
+AC_DEFUN([FLAGS_SETUP_MACOSX_VERSION],
+[
+ # Additional macosx handling
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ # MACOSX_VERSION_MIN specifies the lowest version of Macosx that the built
+ # binaries should be compatible with, even if compiled on a newer version
+ # of the OS. It currently has a hard coded value. Setting this also limits
+ # exposure to API changes in header files. Bumping this is likely to
+ # require code changes to build.
+ MACOSX_VERSION_MIN=10.7.0
+ MACOSX_VERSION_MIN_NODOTS=${MACOSX_VERSION_MIN//\./}
+
+ AC_SUBST(MACOSX_VERSION_MIN)
+
+ # Setting --with-macosx-version-max= makes it an error to build or
+ # link to macosx APIs that are newer than the given OS version. The expected
+ # format for is either nn.n.n or nn.nn.nn. See /usr/include/AvailabilityMacros.h.
+ AC_ARG_WITH([macosx-version-max], [AS_HELP_STRING([--with-macosx-version-max],
+ [error on use of newer functionality. @<:@macosx@:>@])],
+ [
+ if echo "$with_macosx_version_max" | $GREP -q "^[[0-9]][[0-9]]\.[[0-9]]\.[[0-9]]\$"; then
+ MACOSX_VERSION_MAX=$with_macosx_version_max
+ elif echo "$with_macosx_version_max" | $GREP -q "^[[0-9]][[0-9]]\.[[0-9]][[0-9]]\.[[0-9]][[0-9]]\$"; then
+ MACOSX_VERSION_MAX=$with_macosx_version_max
+ elif test "x$with_macosx_version_max" = "xno"; then
+ # Use build system default
+ MACOSX_VERSION_MAX=
+ else
+ AC_MSG_ERROR([osx version format must be nn.n.n or nn.nn.nn])
+ fi
+ ],
+ [MACOSX_VERSION_MAX=]
+ )
+ MACOSX_VERSION_MAX_NODOTS=${MACOSX_VERSION_MAX//\./}
+
+ AC_SUBST(MACOSX_VERSION_MAX)
+ 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
+ if test "x$CFLAGS" != "x"; then
AC_MSG_WARN([Ignoring CFLAGS($CFLAGS) found in environment. Use --with-extra-cflags])
fi
- if test "x$CXXFLAGS" != "x${ADDED_CXXFLAGS}"; then
+ if test "x$CXXFLAGS" != "x"; then
AC_MSG_WARN([Ignoring CXXFLAGS($CXXFLAGS) found in environment. Use --with-extra-cxxflags])
fi
- if test "x$LDFLAGS" != "x${ADDED_LDFLAGS}"; then
+ if test "x$LDFLAGS" != "x"; then
AC_MSG_WARN([Ignoring LDFLAGS($LDFLAGS) found in environment. Use --with-extra-ldflags])
fi
@@ -143,20 +171,9 @@ AC_DEFUN_ONCE([FLAGS_SETUP_USER_SUPPLIED_FLAGS],
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=""
+ USER_CFLAGS="$with_extra_cflags"
+ USER_CXXFLAGS="$with_extra_cxxflags"
+ USER_LDFLAGS="$with_extra_ldflags"
])
# Setup the sysroot flags and add them to global CFLAGS and LDFLAGS so
@@ -193,11 +210,6 @@ AC_DEFUN([FLAGS_SETUP_SYSROOT_FLAGS],
$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
@@ -214,7 +226,53 @@ AC_DEFUN([FLAGS_SETUP_SYSROOT_FLAGS],
AC_SUBST($1SYSROOT_LDFLAGS)
])
-AC_DEFUN_ONCE([FLAGS_SETUP_INIT_FLAGS],
+AC_DEFUN_ONCE([FLAGS_PRE_TOOLCHAIN],
+[
+ # We should always include user supplied flags
+ FLAGS_SETUP_USER_SUPPLIED_FLAGS
+ # The sysroot flags are needed for configure to be able to run the compilers
+ FLAGS_SETUP_SYSROOT_FLAGS
+
+ if test "x$TOOLCHAIN_TYPE" = xxlc; then
+ MACHINE_FLAG="-q${OPENJDK_TARGET_CPU_BITS}"
+ elif test "x$TOOLCHAIN_TYPE" != xmicrosoft; then
+ if test "x$OPENJDK_TARGET_CPU" != xaarch64 &&
+ test "x$OPENJDK_TARGET_CPU" != xarm; then
+ MACHINE_FLAG="-m${OPENJDK_TARGET_CPU_BITS}"
+ fi
+ fi
+
+ # FIXME: global flags are not used yet...
+ # The "global" flags will *always* be set. Without them, it is not possible to
+ # get a working compilation.
+ GLOBAL_CFLAGS="$MACHINE_FLAG $SYSROOT_CFLAGS $USER_CFLAGS"
+ GLOBAL_CXXFLAGS="$MACHINE_FLAG $SYSROOT_CFLAGS $USER_CXXFLAGS"
+ GLOBAL_LDFLAGS="$MACHINE_FLAG $SYSROOT_LDFLAGS $USER_LDFLAGS"
+ # FIXME: Don't really know how to do with this, but this was the old behavior
+ GLOBAL_CPPFLAGS="$SYSROOT_CFLAGS"
+ AC_SUBST(GLOBAL_CFLAGS)
+ AC_SUBST(GLOBAL_CXXFLAGS)
+ AC_SUBST(GLOBAL_LDFLAGS)
+ AC_SUBST(GLOBAL_CPPFLAGS)
+
+ # FIXME: For compatilibity, export this as EXTRA_CFLAGS for now.
+ EXTRA_CFLAGS="$MACHINE_FLAG $USER_CFLAGS"
+ EXTRA_CXXFLAGS="$MACHINE_FLAG $USER_CXXFLAGS"
+ EXTRA_LDFLAGS="$MACHINE_FLAG $USER_LDFLAGS"
+
+ AC_SUBST(EXTRA_CFLAGS)
+ AC_SUBST(EXTRA_CXXFLAGS)
+ AC_SUBST(EXTRA_LDFLAGS)
+
+ # For autoconf testing to work, the global flags must also be stored in the
+ # "unnamed" CFLAGS etc.
+ CFLAGS="$GLOBAL_CFLAGS"
+ CXXFLAGS="$GLOBAL_CXXFLAGS"
+ LDFLAGS="$GLOBAL_LDFLAGS"
+ CPPFLAGS="$GLOBAL_CPPFLAGS"
+])
+
+AC_DEFUN([FLAGS_SETUP_TOOLCHAIN_CONTROL],
[
# 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
@@ -249,38 +307,17 @@ AC_DEFUN_ONCE([FLAGS_SETUP_INIT_FLAGS],
$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)
+ # 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)
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
CC_OUT_OPTION=-Fo
@@ -303,216 +340,6 @@ AC_DEFUN_ONCE([FLAGS_SETUP_INIT_FLAGS],
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_FEATURE)\" \
- -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"
@@ -526,887 +353,46 @@ AC_DEFUN_ONCE([FLAGS_SETUP_COMPILER_FLAGS_FOR_OPTIMIZATION],
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],
+AC_DEFUN_ONCE([FLAGS_POST_TOOLCHAIN],
[
+ FLAGS_SETUP_TOOLCHAIN_CONTROL
+ if test "x$BUILD_SYSROOT" != x; then
+ FLAGS_SETUP_SYSROOT_FLAGS([BUILD_])
+ else
+ if test "x$COMPILE_TYPE" != "xcross"; then
+ BUILD_SYSROOT_CFLAGS="$SYSROOT_CFLAGS"
+ BUILD_SYSROOT_LDFLAGS="$SYSROOT_LDFLAGS"
+ fi
+ fi
+ AC_SUBST(BUILD_SYSROOT_CFLAGS)
+ AC_SUBST(BUILD_SYSROOT_LDFLAGS)
+
+])
+
+AC_DEFUN([FLAGS_SETUP_FLAGS],
+[
+ FLAGS_SETUP_MACOSX_VERSION
FLAGS_SETUP_ABI_PROFILE
- # Optional POSIX functionality needed by the JVM
- #
- # Check if clock_gettime is available and in which library. This indicates
- # availability of CLOCK_MONOTONIC for hotspot. But we don't need to link, so
- # don't let it update LIBS.
- save_LIBS="$LIBS"
- AC_SEARCH_LIBS(clock_gettime, rt, [HAS_CLOCK_GETTIME=true], [])
- if test "x$LIBS" = "x-lrt "; then
- CLOCK_GETTIME_IN_LIBRT=true
- fi
- LIBS="$save_LIBS"
+ FLAGS_SETUP_SHARED_LIBS
+ FLAGS_SETUP_DEBUG_SYMBOLS
+ FLAGS_SETUP_WARNINGS
+ FLAGS_SETUP_QUALITY_CHECKS
+ FLAGS_SETUP_OPTIMIZATION
- FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK_HELPER([TARGET])
- FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK_HELPER([BUILD], [OPENJDK_BUILD_])
+ FLAGS_SETUP_CFLAGS
+ FLAGS_SETUP_LDFLAGS
- # 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"
- $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 \
- -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
-
- # Always enable optional macros for VM.
- $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D__STDC_FORMAT_MACROS"
- $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D__STDC_LIMIT_MACROS"
- $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D__STDC_CONSTANT_MACROS"
-
- # 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
-
- # Optional POSIX functionality needed by the VM
-
- if test "x$HAS_CLOCK_GETTIME" = "xtrue"; then
- $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DSUPPORTS_CLOCK_MONOTONIC"
- if test "x$CLOCK_GETTIME_IN_LIBRT" = "xtrue"; then
- $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DNEEDS_LIBRT"
- fi
- 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=stlport4 $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 \
- -fno-omit-frame-pointer"
- elif test "x$OPENJDK_$1_OS" = xaix; then
- $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DAIX"
- $2JVM_CFLAGS="[$]$2JVM_CFLAGS -qtune=balanced \
- -qalias=noansi -qstrict -qtls=default -qlanglvl=c99vla \
- -qlanglvl=noredefmac -qnortti -qnoeh -qignerrno"
- # We need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows.
- # Hotspot now overflows its 64K TOC (currently only for debug),
- # so for debug we build with '-qpic=large -bbigtoc'.
- if test "x$DEBUG_LEVEL" = xslowdebug || test "x$DEBUG_LEVEL" = xfastdebug; then
- $2JVM_CFLAGS="[$]$2JVM_CFLAGS -qpic=large"
- fi
- 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_OS-$OPENJDK_$1_CPU" = xsolaris-sparcv9; 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); 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
- # MACOSX_VERSION_MIN specifies the lowest version of Macosx that the built
- # binaries should be compatible with, even if compiled on a newer version
- # of the OS. It currently has a hard coded value. Setting this also limits
- # exposure to API changes in header files. Bumping this is likely to
- # require code changes to build.
- MACOSX_VERSION_MIN=10.7.0
- AC_SUBST(MACOSX_VERSION_MIN)
-
- # Setting --with-macosx-version-max= makes it an error to build or
- # link to macosx APIs that are newer than the given OS version. The expected
- # format for is either nn.n.n or nn.nn.nn. See /usr/include/AvailabilityMacros.h.
- AC_ARG_WITH([macosx-version-max], [AS_HELP_STRING([--with-macosx-version-max],
- [error on use of newer functionality. @<:@macosx@:>@])],
- [
- if echo "$with_macosx_version_max" | $GREP -q "^[[0-9]][[0-9]]\.[[0-9]]\.[[0-9]]\$"; then
- MACOSX_VERSION_MAX=$with_macosx_version_max
- elif echo "$with_macosx_version_max" | $GREP -q "^[[0-9]][[0-9]]\.[[0-9]][[0-9]]\.[[0-9]][[0-9]]\$"; then
- MACOSX_VERSION_MAX=$with_macosx_version_max
- elif test "x$with_macosx_version_max" = "xno"; then
- # Use build system default
- MACOSX_VERSION_MAX=
- else
- AC_MSG_ERROR([osx version format must be nn.n.n or nn.nn.nn])
- fi
- ],
- [MACOSX_VERSION_MAX=]
- )
- AC_SUBST(MACOSX_VERSION_MAX)
-
- # Let the flags variables get resolved in make for easier override on make
- # command line. AvailabilityMacros.h versions have no dots, ex: 1070.
- $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK \
- -DMAC_OS_X_VERSION_MIN_REQUIRED=\$(subst .,,\$(MACOSX_VERSION_MIN)) \
- -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
- $2LDFLAGS_JDK="[$]$2LDFLAGS_JDK -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
- $2JVM_CFLAGS="[$]$2JVM_CFLAGS \
- -DMAC_OS_X_VERSION_MIN_REQUIRED=\$(subst .,,\$(MACOSX_VERSION_MIN)) \
- -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
- $2ARFLAGS="$2$ARFLAGS -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
-
- if test -n "$MACOSX_VERSION_MAX"; then
- $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK \
- -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MAX))"
- $2JVM_CFLAGS="[$]$2JVM_CFLAGS \
- -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MAX))"
- fi
- fi
-
- # Setup some hard coded includes
- $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK \
- -I\$(SUPPORT_OUTPUTDIR)/modules_include/java.base \
- -I\$(SUPPORT_OUTPUTDIR)/modules_include/java.base/\$(OPENJDK_TARGET_OS_INCLUDE_SUBDIR) \
- -I${TOPDIR}/src/java.base/share/native/libjava \
- -I${TOPDIR}/src/java.base/$OPENJDK_$1_OS_TYPE/native/libjava \
- -I${TOPDIR}/src/hotspot/share/include \
- -I${TOPDIR}/src/hotspot/os/${HOTSPOT_$1_OS_TYPE}/include"
-
- # 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 -ignore:4281"
- 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 -btextpsize:64K -bdatapsize:64K -bstackpsize:64K"
- $2LDFLAGS_JDK="${$2LDFLAGS_JDK} $LDFLAGS_XLC"
- $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_XLC"
- # We need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows.
- # Hotspot now overflows its 64K TOC (currently only for debug),
- # so we build with '-qpic=large -bbigtoc'.
- if test "x$DEBUG_LEVEL" = xslowdebug || test "x$DEBUG_LEVEL" = xfastdebug; then
- $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -bbigtoc"
- fi
- 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}"
- $2LDFLAGS_JDKLIB="${$2LDFLAGS_JDKLIB} ${LDFLAGS_NO_EXEC_STACK}"
- if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
- $2JAVA_BASE_LDFLAGS="${$2JAVA_BASE_LDFLAGS} \
- -libpath:${OUTPUTDIR}/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 -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($2LDFLAGS_NO_EXEC_STACK)
-
- AC_SUBST($2JVM_CFLAGS)
- AC_SUBST($2JVM_LDFLAGS)
- AC_SUBST($2JVM_ASFLAGS)
- AC_SUBST($2JVM_LIBS)
+ FLAGS_SETUP_ARFLAGS
+ FLAGS_SETUP_STRIPFLAGS
+ FLAGS_SETUP_RCFLAGS
+ FLAGS_SETUP_ASFLAGS
+ FLAGS_SETUP_ASFLAGS_CPU_DEP([TARGET])
+ FLAGS_SETUP_ASFLAGS_CPU_DEP([BUILD], [OPENJDK_BUILD_])
])
# FLAGS_C_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [ARGUMENT], IF_TRUE: [RUN-IF-TRUE],
@@ -1520,110 +506,3 @@ BASIC_DEFUN_NAMED([FLAGS_LINKER_CHECK_ARGUMENTS],
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/make/autoconf/help.m4 b/make/autoconf/help.m4
index 785597300be..2080981af5d 100644
--- a/make/autoconf/help.m4
+++ b/make/autoconf/help.m4
@@ -31,7 +31,7 @@ AC_DEFUN_ONCE([HELP_SETUP_DEPENDENCY_HELP],
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
+ # $1 is the help tag: cups, alsa etc
MISSING_DEPENDENCY=$1
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
@@ -76,24 +76,6 @@ cygwin_help() {
PKGHANDLER_COMMAND="( cd && 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='. This will
-automatically build the freetype library into '/lib64' for 64-bit
-builds or into '/lib32' for 32-bit builds.
-Afterwards you can always use '--with-freetype-include=/include'
-and '--with-freetype-lib=/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
}
diff --git a/make/autoconf/hotspot.m4 b/make/autoconf/hotspot.m4
index ef30bcd317c..f6301b6980a 100644
--- a/make/autoconf/hotspot.m4
+++ b/make/autoconf/hotspot.m4
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -277,13 +277,9 @@ AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_FEATURES],
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.
diff --git a/make/autoconf/lib-freetype.m4 b/make/autoconf/lib-freetype.m4
index 8ea4e0e3d83..4a2c971c7bc 100644
--- a/make/autoconf/lib-freetype.m4
+++ b/make/autoconf/lib-freetype.m4
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -23,91 +23,6 @@
# 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
################################################################################
@@ -122,7 +37,7 @@ AC_DEFUN([LIB_CHECK_POTENTIAL_FREETYPE],
# 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.
+ # Oh no! Let's try in the freetype2 directory.
POTENTIAL_FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH/freetype2"
if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
# Fail.
@@ -130,33 +45,16 @@ AC_DEFUN([LIB_CHECK_POTENTIAL_FREETYPE],
fi
fi
- if test "x$FOUND_FREETYPE" = xyes; then
+ 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
+ AC_MSG_NOTICE([Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location.])
+ FOUND_FREETYPE=no
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 \
+ if 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"
@@ -165,10 +63,7 @@ AC_DEFUN([LIB_CHECK_POTENTIAL_FREETYPE],
fi
fi
- if test "x$FOUND_FREETYPE" = xyes; then
- BASIC_FIXUP_PATH(POTENTIAL_FREETYPE_INCLUDE_PATH)
- BASIC_FIXUP_PATH(POTENTIAL_FREETYPE_LIB_PATH)
-
+ if test "x$FOUND_FREETYPE" = "xyes"; then
FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH"
AC_MSG_CHECKING([for freetype includes])
AC_MSG_RESULT([$FREETYPE_INCLUDE_PATH])
@@ -184,293 +79,147 @@ AC_DEFUN([LIB_CHECK_POTENTIAL_FREETYPE],
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)])])
+ [specify whether to use 'system' or 'bundled' freetype. Other values are errors.
+ The selected option applies to both build time and run time.
+ The default behaviour can be platform dependent.
+ If using 'system' and either the include files or libraries cannot be
+ located automatically, then additionally specify both using
+ --with-freetype-include and --with-freetype-lib.])])
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
+ # This setup is to verify access to system installed freetype header and libraries.
+ # On Windows and MacOS this does not apply and using these options will report an error.
+ # On other platforms (Linux, Solaris, and perhaps AIX), they will default to using
+ # the system libraries. If they are found automatically, nothing need be done.
+ # If they are not found, the configure "--with-freetype-*" options may be used to fix that.
+ # If the preference is to bundle on these platforms then use --with-freetype=bundled
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!
+ if (test "x$with_freetype_include" = "x" && test "x$with_freetype_lib" != "x") || \
+ (test "x$with_freetype_include" != "x" && test "x$with_freetype_lib" = "x"); then
+ AC_MSG_ERROR(['must specify both or neither of --with_freetype_include and --with_freetype_lib])
+ fi
- 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
+ FREETYPE_TO_USE=bundled
+ if (test "x$OPENJDK_TARGET_OS" != "xwindows" && test "x$OPENJDK_TARGET_OS" != "xmacosx"); then
+ FREETYPE_TO_USE=system
+ fi
+ if (test "x$with_freetype" != "x"); then
+ if (test "x$with_freetype" = "xsystem"); then
+ FREETYPE_TO_USE=system
+ elif (test "x$with_freetype" = "xbundled"); then
+ FREETYPE_TO_USE=bundled
+ if (test "x$with_freetype_include" != "x" || test "x$with_freetype_lib" != "x"); then
+ AC_MSG_ERROR(['bundled' cannot be specified with --with_freetype_include and --with_freetype_lib])
fi
else
- # User did not specify settings, but we need freetype. Try to locate it.
+ AC_MSG_ERROR(['valid values for --with-freetype are 'system' and 'bundled'])
+ fi
+ fi
- 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
+ if (test "x$with_freetype_include" != "x" && test "x$with_freetype_lib" != "x"); then
+ FREETYPE_TO_USE=system
+ fi
+
+ if (test "x$FREETYPE_TO_USE" = "xsystem") && \
+ (test "x$OPENJDK_TARGET_OS" = "xwindows" || test "x$OPENJDK_TARGET_OS" = "xmacosx"); then
+ AC_MSG_ERROR([Only bundled freetype can be specified on Mac and Windows])
+ fi
+
+ 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$FREETYPE_TO_USE" = "xsystem"); then
+ 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-lib|include])
fi
+ else
+ # User did not specify a location, but asked for system freetype. Try to locate it.
# 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
+ 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
+ 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
+ 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
+ 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
+ AC_MSG_CHECKING([for freetype])
+ AC_MSG_RESULT([yes (using pkg-config)])
fi
fi
fi
fi
- if test "x$FOUND_FREETYPE" != xyes; then
+ 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)
+ 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])
- 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
+ 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$FOUND_FREETYPE" != "xyes"); then
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/$OPENJDK_TARGET_CPU-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
+ if (test "x$OPENJDK_TARGET_CPU_BITS" = "x64"); then
+ LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib/$OPENJDK_TARGET_CPU-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 # end check in well-known locations
- if test "x$FOUND_FREETYPE" != xyes; then
+ 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
+ if (test "x$FREETYPE_CFLAGS" = "x"); then
+ 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
+ if (test "x$FREETYPE_LIBS" = "x"); then
+ 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
- #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_RESULT([Using freetype: $FREETYPE_TO_USE])
- 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])
-
- if test "x$BUNDLE_FREETYPE" = xyes; then
- FREETYPE_LICENSE=""
- AC_MSG_CHECKING([for freetype license])
- if test "x$with_freetype_license" = "xyes"; then
- AC_MSG_RESULT([no])
- AC_MSG_ERROR([--with-freetype-license must have a value])
- elif test "x$with_freetype_license" != "x"; then
- 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
- else
- if test "x$with_freetype" != "x" && test -f $with_freetype/freetype.md; then
- FREETYPE_LICENSE="$with_freetype/freetype.md"
- AC_MSG_RESULT([$FREETYPE_LICENSE])
- BASIC_FIXUP_PATH(FREETYPE_LICENSE)
- else
- AC_MSG_RESULT([no])
- fi
- fi
- fi
-
- fi # end freetype needed
-
- AC_SUBST(FREETYPE_BUNDLE_LIB_PATH)
+ AC_SUBST(FREETYPE_TO_USE)
AC_SUBST(FREETYPE_CFLAGS)
AC_SUBST(FREETYPE_LIBS)
- AC_SUBST(FREETYPE_LICENSE)
])
diff --git a/make/autoconf/lib-std.m4 b/make/autoconf/lib-std.m4
index 0b875bc7034..cac99f00013 100644
--- a/make/autoconf/lib-std.m4
+++ b/make/autoconf/lib-std.m4
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -81,6 +81,9 @@ AC_DEFUN_ONCE([LIB_SETUP_STD_LIBS],
if test "x$TOOLCHAIN_TYPE" = xsolstudio && test "x$LIBCXX" = x; then
LIBCXX="${SYSROOT}/usr/lib${OPENJDK_TARGET_CPU_ISADIR}/libCrun.so.1"
fi
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ LIBCXX_JVM="-lCrun"
+ fi
AC_SUBST(LIBCXX)
diff --git a/make/autoconf/libraries.m4 b/make/autoconf/libraries.m4
index 7d10ea4dd7f..c40a55589be 100644
--- a/make/autoconf/libraries.m4
+++ b/make/autoconf/libraries.m4
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -101,6 +101,67 @@ AC_DEFUN_ONCE([LIB_SETUP_LIBRARIES],
LIB_SETUP_BUNDLED_LIBS
LIB_SETUP_MISC_LIBS
LIB_SETUP_SOLARIS_STLPORT
+
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ GLOBAL_LIBS="-lc"
+ else
+ GLOBAL_LIBS=""
+ fi
+
+ BASIC_JDKLIB_LIBS=""
+ if test "x$TOOLCHAIN_TYPE" != xmicrosoft; then
+ BASIC_JDKLIB_LIBS="-ljava -ljvm"
+ fi
+
+ # Math library
+ if test "x$OPENJDK_TARGET_OS" != xsolaris; then
+ BASIC_JVM_LIBS="$LIBM"
+ else
+ # FIXME: This hard-coded path is not really proper.
+ if test "x$OPENJDK_TARGET_CPU" = xx86_64; then
+ BASIC_SOLARIS_LIBM_LIBS="/usr/lib/amd64/libm.so.1"
+ elif test "x$OPENJDK_TARGET_CPU" = xsparcv9; then
+ BASIC_SOLARIS_LIBM_LIBS="/usr/lib/sparcv9/libm.so.1"
+ fi
+ BASIC_JVM_LIBS="$BASIC_SOLARIS_LIBM_LIBS"
+ fi
+
+ # Dynamic loading library
+ if test "x$OPENJDK_TARGET_OS" = xlinux || test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xaix; then
+ BASIC_JVM_LIBS="$BASIC_JVM_LIBS $LIBDL"
+ fi
+
+ # Threading library
+ if test "x$OPENJDK_TARGET_OS" = xlinux || test "x$OPENJDK_TARGET_OS" = xaix; then
+ BASIC_JVM_LIBS="$BASIC_JVM_LIBS -lpthread"
+ elif test "x$OPENJDK_TARGET_OS" = xsolaris; then
+ BASIC_JVM_LIBS="$BASIC_JVM_LIBS -lthread"
+ fi
+
+ if test "x$OPENJDK_TARGET_OS" = xsolaris; then
+ BASIC_JVM_LIBS="$BASIC_JVM_LIBS -lsocket -lsched -ldoor -ldemangle -lnsl \
+ -lrt"
+ BASIC_JVM_LIBS="$BASIC_JVM_LIBS $LIBCXX_JVM"
+ fi
+
+ if test "x$OPENJDK_TARGET_OS" = xwindows; then
+ BASIC_JVM_LIBS="$BASIC_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
+
+ JDKLIB_LIBS="$BASIC_JDKLIB_LIBS"
+ JDKEXE_LIBS=""
+ JVM_LIBS="$BASIC_JVM_LIBS"
+ OPENJDK_BUILD_JDKLIB_LIBS="$BASIC_JDKLIB_LIBS"
+ OPENJDK_BUILD_JVM_LIBS="$BASIC_JVM_LIBS"
+
+ AC_SUBST(JDKLIB_LIBS)
+ AC_SUBST(JDKEXE_LIBS)
+ AC_SUBST(JVM_LIBS)
+ AC_SUBST(OPENJDK_BUILD_JDKLIB_LIBS)
+ AC_SUBST(OPENJDK_BUILD_JVM_LIBS)
+ AC_SUBST(GLOBAL_LIBS)
])
################################################################################
diff --git a/make/autoconf/platform.m4 b/make/autoconf/platform.m4
index 654ce9b2b4e..9de0f01d789 100644
--- a/make/autoconf/platform.m4
+++ b/make/autoconf/platform.m4
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -403,15 +403,6 @@ AC_DEFUN([PLATFORM_SETUP_LEGACY_VARS_HELPER],
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"
@@ -563,31 +554,6 @@ AC_DEFUN_ONCE([PLATFORM_SETUP_OPENJDK_BUILD_OS_VERSION],
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],
[
###############################################################################
@@ -597,22 +563,6 @@ AC_DEFUN_ONCE([PLATFORM_SETUP_OPENJDK_TARGET_BITS],
# 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.])
@@ -635,33 +585,14 @@ AC_DEFUN_ONCE([PLATFORM_SETUP_OPENJDK_TARGET_BITS],
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.])
+ 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
diff --git a/make/autoconf/spec.gmk.in b/make/autoconf/spec.gmk.in
index 03dc1dfcedf..f4852a09c92 100644
--- a/make/autoconf/spec.gmk.in
+++ b/make/autoconf/spec.gmk.in
@@ -332,10 +332,9 @@ TEST_JOBS?=@TEST_JOBS@
# Default make target
DEFAULT_MAKE_TARGET:=@DEFAULT_MAKE_TARGET@
+FREETYPE_TO_USE:=@FREETYPE_TO_USE@
FREETYPE_LIBS:=@FREETYPE_LIBS@
FREETYPE_CFLAGS:=@FREETYPE_CFLAGS@
-FREETYPE_BUNDLE_LIB_PATH=@FREETYPE_BUNDLE_LIB_PATH@
-FREETYPE_LICENSE=@FREETYPE_LICENSE@
FONTCONFIG_CFLAGS:=@FONTCONFIG_CFLAGS@
CUPS_CFLAGS:=@CUPS_CFLAGS@
ALSA_LIBS:=@ALSA_LIBS@
@@ -423,7 +422,7 @@ CFLAGS_WARNINGS_ARE_ERRORS:=@CFLAGS_WARNINGS_ARE_ERRORS@
WARNINGS_AS_ERRORS := @WARNINGS_AS_ERRORS@
CFLAGS_CCACHE:=@CFLAGS_CCACHE@
-CXXSTD_CXXFLAG=@CXXSTD_CXXFLAG@
+ADLC_CXXFLAG=@ADLC_CXXFLAG@
# Tools that potentially need to be cross compilation aware.
CC:=@FIXPATH@ @CCACHE@ @ICECC@ @CC@
@@ -436,11 +435,10 @@ CXXFLAGS_JDKLIB:=@CXXFLAGS_JDKLIB@
CFLAGS_JDKEXE:=@CFLAGS_JDKEXE@
CXXFLAGS_JDKEXE:=@CXXFLAGS_JDKEXE@
-LDFLAGS_HASH_STYLE := @LDFLAGS_HASH_STYLE@
-LDFLAGS_NO_EXEC_STACK := @LDFLAGS_NO_EXEC_STACK@
+LIBJSIG_HASHSTYLE_LDFLAGS := @LIBJSIG_HASHSTYLE_LDFLAGS@
+LIBJSIG_NOEXECSTACK_LDFLAGS := @LIBJSIG_NOEXECSTACK_LDFLAGS@
JVM_CFLAGS := @JVM_CFLAGS@
-JVM_CFLAGS_SYMBOLS := @JVM_CFLAGS_SYMBOLS@
JVM_LDFLAGS := @JVM_LDFLAGS@
JVM_ASFLAGS := @JVM_ASFLAGS@
JVM_LIBS := @JVM_LIBS@
@@ -469,6 +467,7 @@ 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@
+GLOBAL_LIBS:=@GLOBAL_LIBS@
# LDFLAGS used to link the jdk native launchers (C-code)
LDFLAGS_JDKEXE:=@LDFLAGS_JDKEXE@
@@ -526,7 +525,6 @@ 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
@@ -535,7 +533,6 @@ 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
diff --git a/make/autoconf/toolchain.m4 b/make/autoconf/toolchain.m4
index 82bae66df92..ea03071f3e3 100644
--- a/make/autoconf/toolchain.m4
+++ b/make/autoconf/toolchain.m4
@@ -52,11 +52,14 @@ TOOLCHAIN_DESCRIPTION_xlc="IBM XL C/C++"
# Minimum supported versions, empty means unspecified
TOOLCHAIN_MINIMUM_VERSION_clang="3.2"
-TOOLCHAIN_MINIMUM_VERSION_gcc="4.7"
+TOOLCHAIN_MINIMUM_VERSION_gcc="4.8"
TOOLCHAIN_MINIMUM_VERSION_microsoft="16.00.30319.01" # VS2010
TOOLCHAIN_MINIMUM_VERSION_solstudio="5.13"
TOOLCHAIN_MINIMUM_VERSION_xlc=""
+# Minimum supported linker versions, empty means unspecified
+TOOLCHAIN_MINIMUM_LD_VERSION_gcc="2.18"
+
# 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_)
@@ -114,6 +117,57 @@ BASIC_DEFUN_NAMED([TOOLCHAIN_CHECK_COMPILER_VERSION],
fi
])
+# Prepare the system so that TOOLCHAIN_CHECK_COMPILER_VERSION can be called.
+# Must have LD_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_LD_VERSION_COMPARISONS],
+[
+ if [ [[ "[$]$1LD_VERSION_NUMBER" =~ (.*\.){4} ]] ]; then
+ AC_MSG_WARN([Linker version number has more than four parts (W.X.Y.Z): [$]$1LD_VERSION_NUMBER. Comparisons might be wrong.])
+ fi
+
+ if [ [[ "[$]$1LD_VERSION_NUMBER" =~ [0-9]{6} ]] ]; then
+ AC_MSG_WARN([Linker version number has a part larger than 99999: [$]$1LD_VERSION_NUMBER. Comparisons might be wrong.])
+ fi
+
+ $2COMPARABLE_ACTUAL_LD_VERSION=`$AWK -F. '{ printf("%05d%05d%05d%05d\n", [$]1, [$]2, [$]3, [$]4) }' <<< "[$]$1LD_VERSION_NUMBER"`
+])
+
+# Check if the configured linker is of a specific version or
+# newer. TOOLCHAIN_PREPARE_FOR_LD_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_LINKER_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_LD_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],
@@ -241,6 +295,8 @@ AC_DEFUN_ONCE([TOOLCHAIN_DETERMINE_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_MINIMUM_LD_VERSION_$TOOLCHAIN_TYPE
+ TOOLCHAIN_MINIMUM_LD_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
@@ -524,6 +580,76 @@ AC_DEFUN([TOOLCHAIN_FIND_COMPILER],
TOOLCHAIN_EXTRACT_COMPILER_VERSION([$1], [$COMPILER_NAME])
])
+# Retrieve the linker version number and store it in LD_VERSION_NUMBER
+# (as a dotted number), and
+# the full version string in LD_VERSION_STRING.
+#
+# $1 = linker to test (LD or BUILD_LD)
+# $2 = human readable name of linker (Linker or BuildLinker)
+AC_DEFUN([TOOLCHAIN_EXTRACT_LD_VERSION],
+[
+ LINKER=[$]$1
+ LINKER_NAME=$2
+
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ # cc -Wl,-V output typically looks like
+ # ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.2329
+
+ # solstudio cc requires us to have an existing file to pass as argument,
+ # but it need not be a syntactically correct C file, so just use
+ # ourself. :)
+ LINKER_VERSION_STRING=`$LD -Wl,-V $TOPDIR/configure 2>&1 | $HEAD -n 1 | $SED -e 's/ld: //'`
+ # Extract version number
+ [ LINKER_VERSION_NUMBER=`$ECHO $LINKER_VERSION_STRING | \
+ $SED -e 's/.* \([0-9][0-9]*\.[0-9][0-9]*\)-\([0-9][0-9]*\.[0-9][0-9]*\)/\1.\2/'` ]
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ LINKER_VERSION_STRING="Unknown"
+ LINKER_VERSION_NUMBER="0.0"
+ 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) Incremental Linker Version 12.00.31101.0
+ LINKER_VERSION_STRING=`$LD 2>&1 | $HEAD -n 1 | $TR -d '\r'`
+ # Extract version number
+ [ LINKER_VERSION_NUMBER=`$ECHO $LINKER_VERSION_STRING | \
+ $SED -e 's/.* \([0-9][0-9]*\(\.[0-9][0-9]*\)*\).*/\1/'` ]
+ elif test "x$TOOLCHAIN_TYPE" = xgcc; then
+ # gcc -Wl,-version output typically looks like
+ # GNU ld (GNU Binutils for Ubuntu) 2.26.1
+ # Copyright (C) 2015 Free Software Foundation, Inc.
+ # This program is free software; [...]
+ LINKER_VERSION_STRING=`$LD -Wl,-version 2>&1 | $HEAD -n 1`
+ # Extract version number
+ [ LINKER_VERSION_NUMBER=`$ECHO $LINKER_VERSION_STRING | \
+ $SED -e 's/.* \([0-9][0-9]*\(\.[0-9][0-9]*\)*\).*/\1/'` ]
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ # clang -Wl,-v output typically looks like
+ # @(#)PROGRAM:ld PROJECT:ld64-305
+ # configured to support archs: armv6 armv7 armv7s arm64 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em (tvOS)
+ # Library search paths: [...]
+ # or
+ # GNU ld (GNU Binutils for Ubuntu) 2.26.1
+
+ LINKER_VERSION_STRING=`$LD -Wl,-v 2>&1 | $HEAD -n 1`
+ # Check if we're using the GNU ld
+ $ECHO "$LINKER_VERSION_STRING" | $GREP "GNU" > /dev/null
+ if test $? -eq 0; then
+ # Extract version number
+ [ LINKER_VERSION_NUMBER=`$ECHO $LINKER_VERSION_STRING | \
+ $SED -e 's/.* \([0-9][0-9]*\(\.[0-9][0-9]*\)*\).*/\1/'` ]
+ else
+ # Extract version number
+ [ LINKER_VERSION_NUMBER=`$ECHO $LINKER_VERSION_STRING | \
+ $SED -e 's/.*-\([0-9][0-9]*\)/\1/'` ]
+ fi
+ fi
+
+ $1_VERSION_NUMBER="$LINKER_VERSION_NUMBER"
+ $1_VERSION_STRING="$LINKER_VERSION_STRING"
+
+ AC_MSG_NOTICE([Using $TOOLCHAIN_TYPE $LINKER_NAME version $LINKER_VERSION_NUMBER @<:@$LINKER_VERSION_STRING@:>@])
+])
+
# 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
@@ -591,6 +717,17 @@ AC_DEFUN_ONCE([TOOLCHAIN_DETECT_TOOLCHAIN_CORE],
# FIXME: it should be CXXLD, according to standard (cf CXXCPP)
AC_SUBST(LDCXX)
+ TOOLCHAIN_EXTRACT_LD_VERSION([LD], [linker])
+ TOOLCHAIN_PREPARE_FOR_LD_VERSION_COMPARISONS
+
+ if test "x$TOOLCHAIN_MINIMUM_LD_VERSION" != x; then
+ TOOLCHAIN_CHECK_LINKER_VERSION(VERSION: $TOOLCHAIN_MINIMUM_LD_VERSION,
+ IF_OLDER_THAN: [
+ AC_MSG_WARN([You are using a linker older than $TOOLCHAIN_MINIMUM_LD_VERSION. This is not a supported configuration.])
+ ]
+ )
+ fi
+
#
# Setup the assembler (AS)
#
@@ -791,7 +928,6 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_BUILD_COMPILERS],
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
@@ -827,6 +963,8 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_BUILD_COMPILERS],
TOOLCHAIN_EXTRACT_COMPILER_VERSION(BUILD_CC, [BuildC])
TOOLCHAIN_EXTRACT_COMPILER_VERSION(BUILD_CXX, [BuildC++])
TOOLCHAIN_PREPARE_FOR_VERSION_COMPARISONS([BUILD_], [OPENJDK_BUILD_])
+ TOOLCHAIN_EXTRACT_LD_VERSION(BUILD_LD, [build linker])
+ TOOLCHAIN_PREPARE_FOR_LD_VERSION_COMPARISONS([BUILD_], [OPENJDK_BUILD_])
else
# If we are not cross compiling, use the normal target compilers for
# building the build platform executables.
@@ -838,11 +976,10 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_BUILD_COMPILERS],
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_])
+ TOOLCHAIN_PREPARE_FOR_LD_VERSION_COMPARISONS([BUILD_], [OPENJDK_BUILD_])
fi
AC_SUBST(BUILD_CC)
@@ -851,8 +988,6 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_BUILD_COMPILERS],
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)
])
@@ -884,24 +1019,6 @@ AC_DEFUN_ONCE([TOOLCHAIN_MISC_CHECKS],
# 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
diff --git a/make/autoconf/toolchain_windows.m4 b/make/autoconf/toolchain_windows.m4
index 6ce41805c5f..1adcc148cca 100644
--- a/make/autoconf/toolchain_windows.m4
+++ b/make/autoconf/toolchain_windows.m4
@@ -77,7 +77,7 @@ VS_MSVCR_2017=vcruntime140.dll
VS_MSVCP_2017=msvcp140.dll
VS_ENVVAR_2017="VS150COMNTOOLS"
VS_VS_INSTALLDIR_2017="Microsoft Visual Studio/2017"
-VS_EDITIONS_2017="Community Professional Enterprise"
+VS_EDITIONS_2017="BuildTools Community Professional Enterprise"
VS_SDK_INSTALLDIR_2017=
VS_VS_PLATFORM_NAME_2017="v141"
VS_SDK_PLATFORM_NAME_2017=
diff --git a/make/autoconf/version-numbers b/make/autoconf/version-numbers
index 1efaed501e1..fc8e6b99f0c 100644
--- a/make/autoconf/version-numbers
+++ b/make/autoconf/version-numbers
@@ -32,6 +32,7 @@ DEFAULT_VERSION_PATCH=0
DEFAULT_VERSION_DATE=2018-09-18
DEFAULT_VERSION_CLASSFILE_MAJOR=55 # "`$EXPR $DEFAULT_VERSION_FEATURE + 44`"
DEFAULT_VERSION_CLASSFILE_MINOR=0
+DEFAULT_ACCEPTABLE_BOOT_VERSIONS="9 10 11"
LAUNCHER_NAME=openjdk
PRODUCT_NAME=OpenJDK
diff --git a/make/common/JdkNativeCompilation.gmk b/make/common/JdkNativeCompilation.gmk
new file mode 100644
index 00000000000..49b0f3e795c
--- /dev/null
+++ b/make/common/JdkNativeCompilation.gmk
@@ -0,0 +1,119 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+ifndef _JDK_NATIVE_COMPILATION_GMK
+_JDK_NATIVE_COMPILATION_GMK := 1
+
+ifeq ($(_MAKEBASE_GMK), )
+ $(error You must include MakeBase.gmk prior to including JdkNativeCompilation.gmk)
+endif
+
+include NativeCompilation.gmk
+
+# Setup make rules for creating a native shared library with suitable defaults
+# for the OpenJDK project.
+#
+# 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 are all passed on to
+# SetupNativeCompilation, except for
+# EXTRA_RC_FLAGS -- additional RC_FLAGS to append.
+SetupJdkLibrary = $(NamedParamsMacroTemplate)
+define SetupJdkLibraryBody
+ ifeq ($$($1_OUTPUT_DIR), )
+ $1_OUTPUT_DIR := $$(call FindLibDirForModule, $$(MODULE))
+ endif
+
+ ifeq ($$($1_OBJECT_DIR), )
+ $1_OBJECT_DIR := $$(SUPPORT_OUTPUTDIR)/native/$$(MODULE)/lib$$($1_NAME)
+ endif
+
+ ifeq ($$($1_VERSIONINFO_RESOURCE), )
+ $1_VERSIONINFO_RESOURCE := $$(GLOBAL_VERSION_INFO_RESOURCE)
+ else ifeq ($$($1_VERSIONINFO_RESOURCE), DISABLE)
+ $1_VERSIONINFO_RESOURCE :=
+ endif
+
+ ifeq ($$($1_RC_FLAGS), )
+ $1_RC_FLAGS := $(RC_FLAGS) \
+ -D "JDK_FNAME=$$($1_NAME).dll" \
+ -D "JDK_INTERNAL_NAME=$$($1_NAME)" \
+ -D "JDK_FTYPE=0x2L"
+ else ifeq ($$($1_RC_FLAGS), DISABLE)
+ $1_RC_FLAGS :=
+ endif
+
+ $1_RC_FLAGS += $$($1_EXTRA_RC_FLAGS)
+
+ # Since we reuse the rule name ($1), all our arguments will pass through.
+ # We lose in transparency, but gain in brevity in this call...
+ $$(eval $$(call SetupNativeCompilation, $1, ))
+endef
+
+# Setup make rules for creating a native executable with suitable defaults for
+# the OpenJDK project.
+#
+# 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 are all passed on to
+# SetupNativeCompilation, except for
+# EXTRA_RC_FLAGS -- additional RC_FLAGS to append.
+SetupJdkExecutable = $(NamedParamsMacroTemplate)
+define SetupJdkExecutableBody
+ $1_TYPE := EXECUTABLE
+
+ ifeq ($$($1_OUTPUT_DIR), )
+ $1_OUTPUT_DIR := $$(call FindExecutableDirForModule, $$(MODULE))
+ endif
+
+ ifeq ($$($1_OBJECT_DIR), )
+ $1_OBJECT_DIR := $$(SUPPORT_OUTPUTDIR)/native/$$(MODULE)/$$($1_NAME)
+ endif
+
+ ifeq ($$($1_VERSIONINFO_RESOURCE), )
+ $1_VERSIONINFO_RESOURCE := $$(GLOBAL_VERSION_INFO_RESOURCE)
+ else ifeq ($$($1_VERSIONINFO_RESOURCE), DISABLE)
+ $1_VERSIONINFO_RESOURCE :=
+ endif
+
+ ifeq ($$($1_RC_FLAGS), )
+ $1_RC_FLAGS := $(RC_FLAGS) \
+ -D "JDK_FNAME=$$($1_NAME).exe" \
+ -D "JDK_INTERNAL_NAME=$$($1_NAME)" \
+ -D "JDK_FTYPE=0x01L"
+ else ifeq ($$($1_RC_FLAGS), DISABLE)
+ $1_RC_FLAGS :=
+ endif
+
+ $1_RC_FLAGS += $$($1_EXTRA_RC_FLAGS)
+
+ # Since we reuse the rule name ($1), all our arguments will pass through.
+ # We lose in transparency, but gain in brevity in this call...
+ $$(eval $$(call SetupNativeCompilation, $1))
+endef
+
+endif # _JDK_NATIVE_COMPILATION_GMK
diff --git a/make/common/MakeBase.gmk b/make/common/MakeBase.gmk
index 3698ef8a8f0..960e9985206 100644
--- a/make/common/MakeBase.gmk
+++ b/make/common/MakeBase.gmk
@@ -67,6 +67,7 @@ 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
+ CORRECT_FUNCTION_IN_RECIPE_EVALUATION := true
endif
##############################
@@ -518,12 +519,14 @@ ifeq ($(OPENJDK_TARGET_OS),solaris)
define install-file
$(call MakeTargetDir)
$(RM) '$(call DecodeSpace, $@)'
- if [ '$(call DecodeSpace, $(dir $@))' != \
+ if [ '$(call DecodeSpace, $(dir $(call EncodeSpace, $@)))' != \
'$(call DecodeSpace, $(dir $(call EncodeSpace, $<)))' ]; then \
- $(CP) -f -r -P '$(call DecodeSpace, $<)' '$(call DecodeSpace, $(@D))'; \
- if [ '$(call DecodeSpace, $(@F))' != \
+ $(CP) -f -r -P '$(call DecodeSpace, $<)' \
+ '$(call DecodeSpace, $(dir $(call EncodeSpace, $@)))'; \
+ if [ '$(call DecodeSpace, $(notdir $(call EncodeSpace, $@)))' != \
'$(call DecodeSpace, $(notdir $(call EncodeSpace, $(<))))' ]; then \
- $(MV) '$(call DecodeSpace, $(@D)/$( $$($1_$2_DEP)
+ $$($1_COMPILER) $$($1_FLAGS) $$($1_DEP_FLAG) $$($1_DEP).tmp \
+ $(CC_OUT_OPTION)$$($1_OBJ) $$($1_SRC_FILE))
+ $(SED) 's|^$$(@F):|$$@:|' $$($1_DEP).tmp > $$($1_DEP)
else
$$(call ExecuteWithLog, $$@, \
- $$($1_$2_COMP) $$($1_$2_FLAGS) $$($1_$2_DEP_FLAG) $$($1_$2_DEP) $(CC_OUT_OPTION)$$($1_$2_OBJ) $2)
+ $$($1_COMPILER) $$($1_FLAGS) $$($1_DEP_FLAG) $$($1_DEP) \
+ $(CC_OUT_OPTION)$$($1_OBJ) $$($1_SRC_FILE))
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)
+ ifneq ($$($1_DEP), )
+ $(SED) $(DEPENDENCY_TARGET_SED_PATTERN) $$($1_DEP) > $$($1_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.
+ # 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)
+ $$($1_COMPILER) $$($1_FLAGS) -showIncludes \
+ $(CC_OUT_OPTION)$$($1_OBJ) $$($1_SRC_FILE)) \
+ | $(TR) -d '\r' | $(GREP) -v -e "^Note: including file:" \
+ -e "^$$($1_FILENAME)$$$$" || test "$$$$?" = "1" ; \
+ $(ECHO) $$@: \\ > $$($1_DEP) ; \
+ $(SED) $(WINDOWS_SHOWINCLUDE_SED_PATTERN) $$($1_OBJ).log \
+ | $(SORT) -u >> $$($1_DEP) ; \
+ $(SED) $(DEPENDENCY_TARGET_SED_PATTERN) $$($1_DEP) > $$($1_DEP_TARGETS)
endif
endif
endef
@@ -378,8 +388,6 @@ endef
# 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
@@ -559,15 +567,13 @@ define SetupNativeCompilationBody
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)
+ $1_EXTRA_CFLAGS += $$(CFLAGS_DEBUG_SYMBOLS)
+ $1_EXTRA_CXXFLAGS += $$(CFLAGS_DEBUG_SYMBOLS)
endif
ifneq ($$($1_REORDER), )
$1_EXTRA_CFLAGS += $$(C_FLAG_REORDER)
- $1_EXTRA_CXXFLAGS += $$(CXX_FLAG_REORDER)
+ $1_EXTRA_CXXFLAGS += $$(C_FLAG_REORDER)
endif
# Pass the library name for static JNI library naming
@@ -641,11 +647,12 @@ define SetupNativeCompilationBody
$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))
+ $$(eval $$(call SetupCompileNativeFile, $1_$$(notdir $$($1_GENERATED_PCH_SRC)), \
+ FILE := $$($1_GENERATED_PCH_SRC), \
+ BASE := $1, \
+ EXTRA_CXXFLAGS := -Fp$$($1_PCH_FILE) -Yc$$(notdir $$($1_PRECOMPILED_HEADER)), \
+ DISABLE_THIS_FILE_DEFINE := true, \
+ ))
$1_USE_PCH_FLAGS := \
-Fp$$($1_PCH_FILE) -Yu$$(notdir $$($1_PRECOMPILED_HEADER))
@@ -688,13 +695,13 @@ define SetupNativeCompilationBody
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))))
+ # Now call SetupCompileNativeFile for each source file we are going to compile.
+ $$(foreach file, $$($1_SRCS), \
+ $$(eval $$(call SetupCompileNativeFile, $1_$$(notdir $$(file)),\
+ FILE := $$(file), \
+ BASE := $1, \
+ )) \
+ )
# Setup rule for printing progress info when compiling source files.
# This is a rough heuristic and may not always print accurate information.
@@ -728,7 +735,7 @@ define SetupNativeCompilationBody
$$(call MakeDir, $$(@D) $$($1_OBJECT_DIR))
$$(call ExecuteWithLog, $$@, \
$$($1_RC) $$($1_RC_FLAGS) $$($1_SYSROOT_CFLAGS) $(CC_OUT_OPTION)$$@ \
- $$($1_VERSIONINFO_RESOURCE))
+ $$($1_VERSIONINFO_RESOURCE) 2>&1 )
# 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
@@ -739,7 +746,7 @@ define SetupNativeCompilationBody
$$($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:" \
+ | $(TR) -d '\r' | $(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) ; \
@@ -791,10 +798,6 @@ define SetupNativeCompilationBody
"-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
@@ -809,15 +812,25 @@ define SetupNativeCompilationBody
$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)
+ $(DSYMUTIL) --out $$($1_OUTPUT_DIR)/$$($1_BASENAME).dSYM $$($1_TARGET)
endif # OPENJDK_TARGET_OS
+ # Since the link rule creates more than one file that we want to track,
+ # we have to use some tricks to get make to cooperate. To properly
+ # trigger downstream dependants of $$($1_DEBUGINFO_FILES), we must have
+ # a recipe in the rule below. To avoid rerunning the recipe every time
+ # have it touch the target. If a debuginfo file is deleted by something
+ # external, explicitly delete the TARGET to trigger a rebuild of both.
+ ifneq ($$(wildcard $$($1_DEBUGINFO_FILES)), $$($1_DEBUGINFO_FILES))
+ $$(call LogDebug, Deleting $$($1_BASENAME) because debuginfo files are missing)
+ $$(shell $(RM) $$($1_TARGET))
+ endif
$$($1_DEBUGINFO_FILES): $$($1_TARGET)
+ $$(if $$(CORRECT_FUNCTION_IN_RECIPE_EVALUATION), \
+ $$(if $$(wildcard $$@), , $$(error $$@ was not created for $$<)) \
+ )
+ $(TOUCH) $$@
$1 += $$($1_DEBUGINFO_FILES)
@@ -852,9 +865,22 @@ define SetupNativeCompilationBody
# 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_NAME).lib"
- # Create a rule for the import lib so that other rules may depend on it
- $$($1_OBJECT_DIR)/$$($1_NAME).lib: $$($1_TARGET)
+ $1_IMPORT_LIBRARY := $$($1_OBJECT_DIR)/$$($1_NAME).lib
+ $1_EXTRA_LDFLAGS += "-implib:$$($1_IMPORT_LIBRARY)"
+ # To properly trigger downstream dependants of the import library, just as
+ # for debug files, we must have a recipe in the rule. To avoid rerunning
+ # the recipe every time have it touch the target. If an import library
+ # file is deleted by something external, explicitly delete the target to
+ # trigger a rebuild of both.
+ ifneq ($$(wildcard $$($1_IMPORT_LIBRARY)), $$($1_IMPORT_LIBRARY))
+ $$(call LogDebug, Deleting $$($1_BASENAME) because import library is missing)
+ $$(shell $(RM) $$($1_TARGET))
+ endif
+ $$($1_IMPORT_LIBRARY): $$($1_TARGET)
+ $$(if $$(CORRECT_FUNCTION_IN_RECIPE_EVALUATION), \
+ $$(if $$(wildcard $$@), , $$(error $$@ was not created for $$<)) \
+ )
+ $(TOUCH) $$@
endif
# Create loadmap on AIX. Helps in diagnosing some problems.
@@ -863,7 +889,7 @@ define SetupNativeCompilationBody
endif
$1_VARDEPS := $$($1_LD) $$($1_SYSROOT_LDFLAGS) $$($1_LDFLAGS) $$($1_EXTRA_LDFLAGS) \
- $$($1_LIBS) $$($1_EXTRA_LIBS) $$($1_CREATE_DEBUGINFO_CMDS) \
+ $$(GLOBAL_LIBS) $$($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)
@@ -917,8 +943,8 @@ define SetupNativeCompilationBody
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)) \
+ $(LD_OUT_OPTION)$$@ $$($1_LD_OBJ_ARG) $$($1_RES) $$(GLOBAL_LIBS) \
+ $$($1_LIBS) $$($1_EXTRA_LIBS)) \
| $(GREP) -v "^ Creating library .*\.lib and object .*\.exp" || \
test "$$$$?" = "1" ; \
$$($1_CREATE_DEBUGINFO_CMDS)
@@ -927,8 +953,8 @@ define SetupNativeCompilationBody
$$(call ExecuteWithLog, $$($1_OBJECT_DIR)/$$($1_SAFE_NAME)_link, \
$$(if $$($1_LINK_OBJS_RELATIVE), $$(CD) $$(OUTPUTDIR) ; ) \
$$($1_LD) $$($1_LDFLAGS) $$($1_EXTRA_LDFLAGS) $$($1_SYSROOT_LDFLAGS) \
- $(LD_OUT_OPTION)$$@ $$($1_LD_OBJ_ARG) $$($1_RES) $$($1_LIBS) \
- $$($1_EXTRA_LIBS)) ; \
+ $(LD_OUT_OPTION)$$@ $$($1_LD_OBJ_ARG) $$($1_RES) $$(GLOBAL_LIBS) \
+ $$($1_LIBS) $$($1_EXTRA_LIBS)) ; \
$$($1_CREATE_DEBUGINFO_CMDS)
$$($1_STRIP_CMD)
endif
@@ -965,7 +991,7 @@ define SetupNativeCompilationBody
ifeq ($$($1_TYPE), EXECUTABLE)
# 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) \
+ $$(GLOBAL_LIBS) $$($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, \
@@ -984,7 +1010,7 @@ define SetupNativeCompilationBody
$$($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))
+ $$(GLOBAL_LIBS) $$($1_LIBS) $$($1_EXTRA_LIBS))
ifeq ($(OPENJDK_TARGET_OS), windows)
ifneq ($$($1_MANIFEST), )
$$($1_MT) -nologo -manifest $$($1_MANIFEST) -identity:"$$($1_NAME).exe, version=$$($1_MANIFEST_VERSION)" -outputresource:$$@;#1
diff --git a/make/common/TestFilesCompilation.gmk b/make/common/TestFilesCompilation.gmk
index a03aa4bef6b..41c5a8e1efc 100644
--- a/make/common/TestFilesCompilation.gmk
+++ b/make/common/TestFilesCompilation.gmk
@@ -44,6 +44,7 @@ include NativeCompilation.gmk
# TYPE Must be either PROGRAM or LIBRARY.
# SOURCE_DIRS A list of source directories to search
# OUTPUT_DIR Where to put the resulting files
+# EXCLUDE A list of filenames to exclude from compilation
SetupTestFilesCompilation = $(NamedParamsMacroTemplate)
define SetupTestFilesCompilationBody
@@ -59,13 +60,13 @@ define SetupTestFilesCompilationBody
ifeq ($$($1_TYPE), LIBRARY)
$1_PREFIX = lib
$1_OUTPUT_SUBDIR := lib
- $1_CFLAGS := $(CFLAGS_TESTLIB) $(CFLAGS_WARNINGS_ARE_ERRORS)
+ $1_CFLAGS := $(CFLAGS_TESTLIB)
$1_LDFLAGS := $(LDFLAGS_TESTLIB) $(call SET_SHARED_LIBRARY_ORIGIN)
$1_COMPILATION_TYPE := LIBRARY
else ifeq ($$($1_TYPE), PROGRAM)
$1_PREFIX = exe
$1_OUTPUT_SUBDIR := bin
- $1_CFLAGS := $(CFLAGS_TESTEXE) $(CFLAGS_WARNINGS_ARE_ERRORS)
+ $1_CFLAGS := $(CFLAGS_TESTEXE)
$1_LDFLAGS := $(LDFLAGS_TESTEXE)
$1_COMPILATION_TYPE := EXECUTABLE
else
@@ -76,20 +77,23 @@ define SetupTestFilesCompilationBody
$1_FILE_LIST := \
$$(shell $$(FIND) $$($1_SOURCE_DIRS) -type f -name "$$($1_PREFIX)*.c")
+ $1_EXCLUDE_PATTERN := $$(addprefix %/, $$($1_EXCLUDE))
+ $1_FILTERED_FILE_LIST := $$(filter-out $$($1_EXCLUDE_PATTERN), $$($1_FILE_LIST))
+
# Setup a compilation for each and every one of them
- $$(foreach file, $$($1_FILE_LIST),\
- $$(eval name := $$(strip $$(patsubst $$($1_PREFIX)%, %, $$(basename $$(notdir $$(file)))))) \
+ $$(foreach file, $$($1_FILTERED_FILE_LIST),\
+ $$(eval name := $$(strip $$(basename $$(notdir $$(file))))) \
+ $$(eval unprefixed_name := $$(patsubst $$($1_PREFIX)%, %, $$(name))) \
$$(eval $$(call SetupNativeCompilation, BUILD_TEST_$$(name), \
- NAME := $$(name), \
+ NAME := $$(unprefixed_name), \
TYPE := $$($1_COMPILATION_TYPE), \
SRC := $$(patsubst %/,%,$$(dir $$(file))), \
INCLUDE_FILES := $$(notdir $$(file)), \
- OBJECT_DIR := $$($1_OUTPUT_DIR)/support/$$($1_PREFIX)$$(name), \
+ OBJECT_DIR := $$($1_OUTPUT_DIR)/support/$$(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)), \
+ CFLAGS := $$($1_CFLAGS) $$($1_CFLAGS_$$(name)), \
+ LDFLAGS := $$($1_LDFLAGS) $$($1_LDFLAGS_$$(name)), \
+ LIBS := $$($1_LIBS_$$(name)), \
OPTIMIZATION := LOW, \
COPY_DEBUG_SYMBOLS := false, \
STRIP_SYMBOLS := false, \
diff --git a/make/conf/jib-profiles.js b/make/conf/jib-profiles.js
index 9a6d32b0196..c97abaf8a16 100644
--- a/make/conf/jib-profiles.js
+++ b/make/conf/jib-profiles.js
@@ -232,7 +232,8 @@ var getJibProfilesCommon = function (input, data) {
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"
+ "linux-aarch64", "linux-arm64", "linux-arm-vfp-hflt",
+ "linux-arm-vfp-hflt-dyn"
];
// These are the base setttings for all the main build profiles.
@@ -429,7 +430,7 @@ var getJibProfilesProfiles = function (input, common, data) {
"macosx-x64": {
target_os: "macosx",
target_cpu: "x64",
- dependencies: ["devkit", "autoconf", "freetype"],
+ dependencies: ["devkit", "autoconf"],
configure_args: concat(common.configure_args_64bit, "--with-zlib=system",
"--with-macosx-version-max=10.7.0"),
},
@@ -453,7 +454,7 @@ var getJibProfilesProfiles = function (input, common, data) {
"windows-x64": {
target_os: "windows",
target_cpu: "x64",
- dependencies: ["devkit", "autoconf", "freetype"],
+ dependencies: ["devkit", "autoconf"],
configure_args: concat(common.configure_args_64bit),
},
@@ -461,10 +462,20 @@ var getJibProfilesProfiles = function (input, common, data) {
target_os: "windows",
target_cpu: "x86",
build_cpu: "x64",
- dependencies: ["devkit", "autoconf", "freetype"],
+ dependencies: ["devkit", "autoconf"],
configure_args: concat(common.configure_args_32bit),
},
+ "linux-aarch64": {
+ target_os: "linux",
+ target_cpu: "aarch64",
+ build_cpu: "x64",
+ dependencies: ["devkit", "autoconf", "build_devkit", "cups"],
+ configure_args: [
+ "--openjdk-target=aarch64-linux-gnu"
+ ],
+ },
+
"linux-arm64": {
target_os: "linux",
target_cpu: "aarch64",
@@ -517,6 +528,32 @@ var getJibProfilesProfiles = function (input, common, data) {
profiles[debugName] = concatObjects(profiles[name],
common.slowdebug_profile_base);
});
+ // Generate testmake profiles for the main profile of each build host
+ // platform. This profile only runs the makefile tests.
+ // Ant is needed to run the idea project generator test.
+ var testmakeBase = {
+ dependencies: [ "ant" ],
+ environment: {
+ "ANT_HOME": input.get("ant", "install_path") + "/apache-ant-1.7.1"
+ }
+ };
+ [ "linux-x64", "macosx-x64", "solaris-sparcv9", "solaris-x64", "windows-x64"]
+ .forEach(function (name) {
+ var maketestName = name + "-testmake";
+ profiles[maketestName] = concatObjects(profiles[name], testmakeBase);
+ profiles[maketestName].default_make_targets = [ "test-make" ];
+ });
+ // Generate cmp-baseline profiles for each main profile. This profile does
+ // a compare build run with no changes to verify that the compare script
+ // has a clean baseline
+ common.main_profile_names.forEach(function (name) {
+ var cmpBaselineName = name + "-cmp-baseline";
+ profiles[cmpBaselineName] = clone(profiles[name]);
+ // Only compare the images target. This should pressumably be expanded
+ // to include more build targets when possible.
+ profiles[cmpBaselineName].default_make_targets = [ "images" ];
+ profiles[cmpBaselineName].make_args = [ "COMPARE_BUILD=CONF=" ];
+ });
// Profiles for building the zero jvm variant. These are used for verification
// in JPRT.
@@ -582,6 +619,9 @@ var getJibProfilesProfiles = function (input, common, data) {
"windows-x86": {
platform: "windows-x86",
},
+ "linux-aarch64": {
+ platform: "linux-aarch64",
+ },
"linux-arm64": {
platform: "linux-arm64-vfp-hflt",
},
@@ -743,11 +783,22 @@ var getJibProfilesProfiles = function (input, common, data) {
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);
}
+ // On windows we want the debug symbols available at test time
+ if (input.build_os == "windows") {
+ windowsRunTestPrebuiltExtra = {
+ dependencies: [ testedProfile + ".jdk_symbols" ],
+ environment: {
+ "PRODUCT_SYMBOLS_HOME": input.get(testedProfile + ".jdk_symbols", "home_path"),
+ }
+ };
+ profiles["run-test-prebuilt"] = concatObjects(profiles["run-test-prebuilt"],
+ windowsRunTestPrebuiltExtra);
+ }
// Generate the missing platform attributes
profiles = generatePlatformAttributes(profiles);
@@ -770,7 +821,9 @@ var getJibProfilesDependencies = function (input, common) {
solaris_x64: "SS12u4-Solaris11u1+1.0",
solaris_sparcv9: "SS12u4-Solaris11u1+1.1",
windows_x64: "VS2013SP4+1.0",
- linux_aarch64: "gcc-linaro-aarch64-linux-gnu-4.8-2013.11_linux+1.0",
+ linux_aarch64: (input.profile != null && input.profile.indexOf("arm64") >= 0
+ ? "gcc-linaro-aarch64-linux-gnu-4.8-2013.11_linux+1.0"
+ : "gcc7.3.0-Fedora27+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")
@@ -783,12 +836,6 @@ var getJibProfilesDependencies = function (input, common) {
var boot_jdk_platform = (input.build_os == "macosx" ? "osx" : input.build_os)
+ "-" + input.build_cpu;
- var freetype_version = {
- windows_x64: "2.7.1-v120+1.1",
- windows_x86: "2.7.1-v120+1.1",
- macosx_x64: "2.7.1-Xcode6.3-MacOSX10.9+1.0"
- }[input.target_platform];
-
var makeBinDir = (input.build_os == "windows"
? input.get("gnumake", "install_path") + "/cygwin/bin"
: input.get("gnumake", "install_path") + "/bin");
@@ -865,13 +912,6 @@ var getJibProfilesDependencies = function (input, common) {
environment_path: input.get("autoconf", "install_path")
},
- freetype: {
- organization: common.organization,
- ext: "tar.gz",
- revision: freetype_version,
- module: "freetype-" + input.target_platform
- },
-
graphviz: {
organization: common.organization,
ext: "tar.gz",
@@ -899,7 +939,15 @@ var getJibProfilesDependencies = function (input, common) {
environment_name: "JIB_JAR",
environment_value: input.get("jib", "install_path")
+ "/jib-3.0-SNAPSHOT-distribution/lib/jib-3.0-SNAPSHOT.jar"
- }
+ },
+
+ ant: {
+ organization: common.organization,
+ ext: "zip",
+ revision: "1.7.1+1.0",
+ configure_args: "",
+ },
+
};
// Need to add a value for the Visual Studio tools variable to make
diff --git a/make/copy/Copy-java.desktop.gmk b/make/copy/Copy-java.desktop.gmk
index 4afbed8f7a4..b4f28a96a26 100644
--- a/make/copy/Copy-java.desktop.gmk
+++ b/make/copy/Copy-java.desktop.gmk
@@ -29,52 +29,6 @@ $(eval $(call IncludeCustomExtension, copy/Copy-java.desktop.gmk))
################################################################################
-ifneq ($(FREETYPE_BUNDLE_LIB_PATH), )
- # We need to bundle the freetype library, so it will be available at runtime
- # as well as link time.
- #
- # NB: Default freetype build system uses -h linker option and
- # result .so contains hardcoded library name that is later
- # used for adding dependencies to other objects
- # (e.g. libfontmanager.so).
- #
- # It is not obvious how to extract that hardcoded name (libfreetype.so.6)
- # without overcomplicating logic here.
- # To workaround this we hardcode .6 suffix for now.
- #
- # Note that .so.6 library will not be found by System.loadLibrary()
- # but fortunately we need to load FreeType library explicitly
- # on windows only
- #
- #TODO: rework this to avoid hardcoding library name in the makefile
- #
- ifneq ($(filter $(OPENJDK_TARGET_OS), linux solaris), )
- FREETYPE_TARGET_LIB := $(LIB_DST_DIR)/$(call SHARED_LIBRARY,freetype).6
- else
- FREETYPE_TARGET_LIB := $(LIB_DST_DIR)/$(call SHARED_LIBRARY,freetype)
- endif
-
- # We can't use $(install-file) in this rule because it preserves symbolic links and
- # libfreetype.so is usually a symbolic link to something like libfreetype.so.6 on Unix.
- $(FREETYPE_TARGET_LIB): $(FREETYPE_BUNDLE_LIB_PATH)/$(call SHARED_LIBRARY,freetype)
- $(MKDIR) -p $(@D)
- $(CP) $< $@
- ifeq ($(OPENJDK_BUILD_OS), windows)
- $(CHMOD) +rx $@
- endif
-
- TARGETS += $(FREETYPE_TARGET_LIB)
-
- $(eval $(call SetupCopyFiles, COPY_FREETYPE_LICENSE, \
- FILES := $(FREETYPE_LICENSE), \
- DEST := $(LEGAL_DST_DIR), \
- ))
-
- TARGETS += $(COPY_FREETYPE_LICENSE)
-endif
-
-################################################################################
-
$(CONF_DST_DIR)/sound.properties: $(TOPDIR)/src/java.desktop/share/conf/sound.properties
$(call install-file)
diff --git a/make/data/x11wrappergen/functions.txt b/make/data/x11wrappergen/functions.txt
deleted file mode 100644
index 6b1623b1304..00000000000
--- a/make/data/x11wrappergen/functions.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-!XGetWindowProperty|int
- w long
- property Atom
- long_offset long
- long_length long
- delete Bool
- req_type Atom
- actual_type Atom out
- actual_format int out
- number_of_items long out
- bytes_after long out
- data pointer out free
-!XQueryTree|int
- w long
- root long out
- parent long out
- children pointer out free
- nchildren int out
-!XTranslateCoordinates|int
- scr_w long
- dest_w long
- src_x int
- src_y int
- dest_x int out
- dest_y int out
- child long out
diff --git a/make/data/x11wrappergen/sizes.32 b/make/data/x11wrappergen/sizes-32.txt
similarity index 100%
rename from make/data/x11wrappergen/sizes.32
rename to make/data/x11wrappergen/sizes-32.txt
index 2ac1cb32307..935abc9465a 100644
--- a/make/data/x11wrappergen/sizes.32
+++ b/make/data/x11wrappergen/sizes-32.txt
@@ -1,1017 +1,1017 @@
-long 4
-int 4
-short 2
-ptr 4
-Bool 4
Atom 4
-Window 4
-XExtData.number 0
-XExtData.next 4
-XExtData.free_private 8
-XExtData.private_data 12
-XExtData 16
-XIMStringConversionCallbackStruct.position 0
-XIMStringConversionCallbackStruct.direction 4
-XIMStringConversionCallbackStruct.operation 8
-XIMStringConversionCallbackStruct.factor 10
-XIMStringConversionCallbackStruct.text 12
-XIMStringConversionCallbackStruct 16
-XkbNewKeyboardNotifyEvent.type 0
-XkbNewKeyboardNotifyEvent.serial 4
-XkbNewKeyboardNotifyEvent.send_event 8
-XkbNewKeyboardNotifyEvent.display 12
-XkbNewKeyboardNotifyEvent.time 16
-XkbNewKeyboardNotifyEvent.xkb_type 20
-XkbNewKeyboardNotifyEvent.device 24
-XkbNewKeyboardNotifyEvent.old_device 28
-XkbNewKeyboardNotifyEvent.min_key_code 32
-XkbNewKeyboardNotifyEvent.max_key_code 36
-XkbNewKeyboardNotifyEvent.old_min_key_code 40
-XkbNewKeyboardNotifyEvent.old_max_key_code 44
-XkbNewKeyboardNotifyEvent.changed 48
-XkbNewKeyboardNotifyEvent.req_major 52
-XkbNewKeyboardNotifyEvent.req_minor 53
-XkbNewKeyboardNotifyEvent 56
-XTimeCoord.time 0
-XTimeCoord.x 4
-XTimeCoord.y 6
-XTimeCoord 8
-XkbCompatMapNotifyEvent.type 0
-XkbCompatMapNotifyEvent.serial 4
-XkbCompatMapNotifyEvent.send_event 8
-XkbCompatMapNotifyEvent.display 12
-XkbCompatMapNotifyEvent.time 16
-XkbCompatMapNotifyEvent.xkb_type 20
-XkbCompatMapNotifyEvent.device 24
-XkbCompatMapNotifyEvent.changed_groups 28
-XkbCompatMapNotifyEvent.first_si 32
-XkbCompatMapNotifyEvent.num_si 36
-XkbCompatMapNotifyEvent.num_total_si 40
-XkbCompatMapNotifyEvent 44
-XIMStatusDrawCallbackStruct.type 0
-XIMStatusDrawCallbackStruct.data 4
-XIMStatusDrawCallbackStruct 8
-XKeyboardControl.key_click_percent 0
-XKeyboardControl.bell_percent 4
-XKeyboardControl.bell_pitch 8
-XKeyboardControl.bell_duration 12
-XKeyboardControl.led 16
-XKeyboardControl.led_mode 20
-XKeyboardControl.key 24
-XKeyboardControl.auto_repeat_mode 28
-XKeyboardControl 32
-XSelectionClearEvent.type 0
-XSelectionClearEvent.serial 4
-XSelectionClearEvent.send_event 8
-XSelectionClearEvent.display 12
-XSelectionClearEvent.window 16
-XSelectionClearEvent.selection 20
-XSelectionClearEvent.time 24
-XSelectionClearEvent 28
-XWindowChanges.x 0
-XWindowChanges.y 4
-XWindowChanges.width 8
-XWindowChanges.height 12
-XWindowChanges.border_width 16
-XWindowChanges.sibling 20
-XWindowChanges.stack_mode 24
-XWindowChanges 28
-XIMPreeditCaretCallbackStruct.position 0
-XIMPreeditCaretCallbackStruct.direction 4
-XIMPreeditCaretCallbackStruct.style 8
-XIMPreeditCaretCallbackStruct 12
-XOMCharSetList.charset_count 0
-XOMCharSetList.charset_list 4
-XOMCharSetList 8
-XOMFontInfo.num_font 0
-XOMFontInfo.font_struct_list 4
-XOMFontInfo.font_name_list 8
-XOMFontInfo 12
+AwtGraphicsConfigData 128
+AwtGraphicsConfigData.awt_cmap 4
+AwtGraphicsConfigData.AwtColorMatch 56
+AwtGraphicsConfigData.awt_depth 0
+AwtGraphicsConfigData.awtImage 52
+AwtGraphicsConfigData.awt_num_colors 48
+AwtGraphicsConfigData.awt_visInfo 8
+AwtGraphicsConfigData.color_data 84
+AwtGraphicsConfigData.glxInfo 88
+AwtGraphicsConfigData.isTranslucencySupported 92
+AwtGraphicsConfigData.monoImage 60
+AwtGraphicsConfigData.monoPixmap 64
+AwtGraphicsConfigData.monoPixmapGC 76
+AwtGraphicsConfigData.monoPixmapHeight 72
+AwtGraphicsConfigData.monoPixmapWidth 68
+AwtGraphicsConfigData.pixelStride 80
+AwtGraphicsConfigData.renderPictFormat 96
+awtImageData 304
+awtImageData.clrdata 16
+awtImageData.convert 48
+awtImageData.Depth 0
+awtImageData.wsImageFormat 4
+AwtScreenData 24
+AwtScreenData.blackpixel 12
+AwtScreenData.configs 20
+AwtScreenData.defaultConfig 16
AwtScreenData.numConfigs 0
AwtScreenData.root 4
AwtScreenData.whitepixel 8
-AwtScreenData.blackpixel 12
-AwtScreenData.defaultConfig 16
-AwtScreenData.configs 20
-AwtScreenData 24
-XIMHotKeyTrigger.keysym 0
-XIMHotKeyTrigger.modifier 4
-XIMHotKeyTrigger.modifier_mask 8
-XIMHotKeyTrigger 12
-XCirculateEvent.type 0
-XCirculateEvent.serial 4
-XCirculateEvent.send_event 8
-XCirculateEvent.display 12
-XCirculateEvent.event 16
-XCirculateEvent.window 20
-XCirculateEvent.place 24
-XCirculateEvent 28
-Screen.ext_data 0
-Screen.display 4
-Screen.root 8
-Screen.width 12
-Screen.height 16
-Screen.mwidth 20
-Screen.mheight 24
-Screen.ndepths 28
-Screen.depths 32
-Screen.root_depth 36
-Screen.root_visual 40
-Screen.default_gc 44
-Screen.cmap 48
-Screen.white_pixel 52
-Screen.black_pixel 56
-Screen.max_maps 60
-Screen.min_maps 64
-Screen.backing_store 68
-Screen.save_unders 72
-Screen.root_input_mask 76
-Screen 80
-XMapRequestEvent.type 0
-XMapRequestEvent.serial 4
-XMapRequestEvent.send_event 8
-XMapRequestEvent.display 12
-XMapRequestEvent.parent 16
-XMapRequestEvent.window 20
-XMapRequestEvent 24
-XIMText.length 0
-XIMText.feedback 4
-XIMText.encoding_is_wchar 8
-XIMText.string 12
-XIMText 16
-XGraphicsExposeEvent.type 0
-XGraphicsExposeEvent.serial 4
-XGraphicsExposeEvent.send_event 8
-XGraphicsExposeEvent.display 12
-XGraphicsExposeEvent.drawable 16
-XGraphicsExposeEvent.x 20
-XGraphicsExposeEvent.y 24
-XGraphicsExposeEvent.width 28
-XGraphicsExposeEvent.height 32
-XGraphicsExposeEvent.count 36
-XGraphicsExposeEvent.major_code 40
-XGraphicsExposeEvent.minor_code 44
-XGraphicsExposeEvent 48
-XEvent.type 0
-XEvent.xany 0
-XEvent.xkey 0
-XEvent.xbutton 0
-XEvent.xmotion 0
-XEvent.xcrossing 0
-XEvent.xfocus 0
-XEvent.xexpose 0
-XEvent.xgraphicsexpose 0
-XEvent.xnoexpose 0
-XEvent.xvisibility 0
-XEvent.xcreatewindow 0
-XEvent.xdestroywindow 0
-XEvent.xunmap 0
-XEvent.xmap 0
-XEvent.xmaprequest 0
-XEvent.xreparent 0
-XEvent.xconfigure 0
-XEvent.xgravity 0
-XEvent.xresizerequest 0
-XEvent.xconfigurerequest 0
-XEvent.xcirculate 0
-XEvent.xcirculaterequest 0
-XEvent.xproperty 0
-XEvent.xselectionclear 0
-XEvent.xselectionrequest 0
-XEvent.xselection 0
-XEvent.xcolormap 0
-XEvent.xclient 0
-XEvent.xmapping 0
-XEvent.xerror 0
-XEvent.xkeymap 0
-XEvent.pad 0
-XEvent 96
-XRenderDirectFormat.red 0
-XRenderDirectFormat.redMask 2
-XRenderDirectFormat.green 4
-XRenderDirectFormat.greenMask 6
-XRenderDirectFormat.blue 8
-XRenderDirectFormat.blueMask 10
-XRenderDirectFormat.alpha 12
-XRenderDirectFormat.alphaMask 14
-XRenderDirectFormat 16
-ColorData.awt_Colors 0
-ColorData.awt_numICMcolors 4
-ColorData.awt_icmLUT 8
-ColorData.awt_icmLUT2Colors 12
-ColorData.img_grays 16
-ColorData.img_clr_tbl 20
-ColorData.img_oda_red 24
-ColorData.img_oda_green 28
-ColorData.img_oda_blue 32
-ColorData.pGrayInverseLutData 36
-ColorData.screendata 40
-ColorData.representsPrimaries 44
+Bool 4
ColorData 48
-XFontStruct.ext_data 0
-XFontStruct.fid 4
-XFontStruct.direction 8
-XFontStruct.min_char_or_byte2 12
-XFontStruct.max_char_or_byte2 16
-XFontStruct.min_byte1 20
-XFontStruct.max_byte1 24
-XFontStruct.all_chars_exist 28
-XFontStruct.n_properties 36
-XFontStruct.properties 40
-XFontStruct.min_bounds 44
-XFontStruct.max_bounds 56
-XFontStruct.per_char 68
-XFontStruct.ascent 72
-XFontStruct.descent 76
-XFontStruct 80
-XExtCodes.extension 0
-XExtCodes.major_opcode 4
-XExtCodes.first_event 8
-XExtCodes.first_error 12
-XExtCodes 16
-XFontSetExtents.max_ink_extent 0
-XFontSetExtents.max_logical_extent 8
-XFontSetExtents 16
-XSelectionEvent.type 0
-XSelectionEvent.serial 4
-XSelectionEvent.send_event 8
-XSelectionEvent.display 12
-XSelectionEvent.requestor 16
-XSelectionEvent.selection 20
-XSelectionEvent.target 24
-XSelectionEvent.property 28
-XSelectionEvent.time 32
-XSelectionEvent 36
-XArc.x 0
-XArc.y 2
-XArc.width 4
-XArc.height 6
+ColorData.awt_Colors 0
+ColorData.awt_icmLUT2Colors 12
+ColorData.awt_icmLUT 8
+ColorData.awt_numICMcolors 4
+ColorData.img_clr_tbl 20
+ColorData.img_grays 16
+ColorData.img_oda_blue 32
+ColorData.img_oda_green 28
+ColorData.img_oda_red 24
+ColorData.pGrayInverseLutData 36
+ColorData.representsPrimaries 44
+ColorData.screendata 40
+ColorEntry 4
+ColorEntry.b 2
+ColorEntry.flags 3
+ColorEntry.g 1
+ColorEntry.r 0
+Depth 12
+Depth.depth 0
+Depth.nvisuals 4
+Depth.visuals 8
+int 4
+long 4
+PropMwmHints 20
+PropMwmHints.decorations 8
+PropMwmHints.flags 0
+PropMwmHints.functions 4
+PropMwmHints.inputMode 12
+PropMwmHints.status 16
+ptr 4
+Screen 80
+Screen.backing_store 68
+Screen.black_pixel 56
+Screen.cmap 48
+Screen.default_gc 44
+Screen.depths 32
+Screen.display 4
+Screen.ext_data 0
+ScreenFormat 16
+ScreenFormat.bits_per_pixel 8
+ScreenFormat.depth 4
+ScreenFormat.ext_data 0
+ScreenFormat.scanline_pad 12
+Screen.height 16
+Screen.max_maps 60
+Screen.mheight 24
+Screen.min_maps 64
+Screen.mwidth 20
+Screen.ndepths 28
+Screen.root 8
+Screen.root_depth 36
+Screen.root_input_mask 76
+Screen.root_visual 40
+Screen.save_unders 72
+Screen.white_pixel 52
+Screen.width 12
+short 2
+Visual 32
+Visual.bits_per_rgb 24
+Visual.blue_mask 20
+Visual.class 8
+Visual.ext_data 0
+Visual.green_mask 16
+Visual.map_entries 28
+Visual.red_mask 12
+Visual.visualid 4
+Window 4
+XAnyEvent 20
+XAnyEvent.display 12
+XAnyEvent.send_event 8
+XAnyEvent.serial 4
+XAnyEvent.type 0
+XAnyEvent.window 16
+XArc 12
XArc.angle1 8
XArc.angle2 10
-XArc 12
-XErrorEvent.type 0
-XErrorEvent.display 4
-XErrorEvent.resourceid 8
-XErrorEvent.serial 12
-XErrorEvent.error_code 16
-XErrorEvent.request_code 17
-XErrorEvent.minor_code 18
-XErrorEvent 20
-XConfigureRequestEvent.type 0
-XConfigureRequestEvent.serial 4
-XConfigureRequestEvent.send_event 8
+XArc.height 6
+XArc.width 4
+XArc.x 0
+XArc.y 2
+XButtonEvent 60
+XButtonEvent.button 52
+XButtonEvent.display 12
+XButtonEvent.root 20
+XButtonEvent.same_screen 56
+XButtonEvent.send_event 8
+XButtonEvent.serial 4
+XButtonEvent.state 48
+XButtonEvent.subwindow 24
+XButtonEvent.time 28
+XButtonEvent.type 0
+XButtonEvent.window 16
+XButtonEvent.x 32
+XButtonEvent.x_root 40
+XButtonEvent.y 36
+XButtonEvent.y_root 44
+XChar2b 2
+XChar2b.byte1 0
+XChar2b.byte2 1
+XCharStruct 12
+XCharStruct.ascent 6
+XCharStruct.attributes 10
+XCharStruct.descent 8
+XCharStruct.lbearing 0
+XCharStruct.rbearing 2
+XCharStruct.width 4
+XCirculateEvent 28
+XCirculateEvent.display 12
+XCirculateEvent.event 16
+XCirculateEvent.place 24
+XCirculateEvent.send_event 8
+XCirculateEvent.serial 4
+XCirculateEvent.type 0
+XCirculateEvent.window 20
+XCirculateRequestEvent 28
+XCirculateRequestEvent.display 12
+XCirculateRequestEvent.parent 16
+XCirculateRequestEvent.place 24
+XCirculateRequestEvent.send_event 8
+XCirculateRequestEvent.serial 4
+XCirculateRequestEvent.type 0
+XCirculateRequestEvent.window 20
+XClassHint 8
+XClassHint.res_class 4
+XClassHint.res_name 0
+XClientMessageEvent 48
+XClientMessageEvent.data 28
+XClientMessageEvent.display 12
+XClientMessageEvent.format 24
+XClientMessageEvent.message_type 20
+XClientMessageEvent.send_event 8
+XClientMessageEvent.serial 4
+XClientMessageEvent.type 0
+XClientMessageEvent.window 16
+XColor 12
+XColor.blue 8
+XColor.flags 10
+XColor.green 6
+XColormapEvent 32
+XColormapEvent.colormap 20
+XColormapEvent.display 12
+XColormapEvent.new 24
+XColormapEvent.send_event 8
+XColormapEvent.serial 4
+XColormapEvent.state 28
+XColormapEvent.type 0
+XColormapEvent.window 16
+XColor.pad 11
+XColor.pixel 0
+XColor.red 4
+XComposeStatus 8
+XComposeStatus.chars_matched 4
+XComposeStatus.compose_ptr 0
+XConfigureEvent 52
+XConfigureEvent.above 44
+XConfigureEvent.border_width 40
+XConfigureEvent.display 12
+XConfigureEvent.event 16
+XConfigureEvent.height 36
+XConfigureEvent.override_redirect 48
+XConfigureEvent.send_event 8
+XConfigureEvent.serial 4
+XConfigureEvent.type 0
+XConfigureEvent.width 32
+XConfigureEvent.window 20
+XConfigureEvent.x 24
+XConfigureEvent.y 28
+XConfigureRequestEvent 56
+XConfigureRequestEvent.above 44
+XConfigureRequestEvent.border_width 40
+XConfigureRequestEvent.detail 48
XConfigureRequestEvent.display 12
+XConfigureRequestEvent.height 36
XConfigureRequestEvent.parent 16
+XConfigureRequestEvent.send_event 8
+XConfigureRequestEvent.serial 4
+XConfigureRequestEvent.type 0
+XConfigureRequestEvent.value_mask 52
+XConfigureRequestEvent.width 32
XConfigureRequestEvent.window 20
XConfigureRequestEvent.x 24
XConfigureRequestEvent.y 28
-XConfigureRequestEvent.width 32
-XConfigureRequestEvent.height 36
-XConfigureRequestEvent.border_width 40
-XConfigureRequestEvent.above 44
-XConfigureRequestEvent.detail 48
-XConfigureRequestEvent.value_mask 52
-XConfigureRequestEvent 56
-ScreenFormat.ext_data 0
-ScreenFormat.depth 4
-ScreenFormat.bits_per_pixel 8
-ScreenFormat.scanline_pad 12
-ScreenFormat 16
-XButtonEvent.type 0
-XButtonEvent.serial 4
-XButtonEvent.send_event 8
-XButtonEvent.display 12
-XButtonEvent.window 16
-XButtonEvent.root 20
-XButtonEvent.subwindow 24
-XButtonEvent.time 28
-XButtonEvent.x 32
-XButtonEvent.y 36
-XButtonEvent.x_root 40
-XButtonEvent.y_root 44
-XButtonEvent.state 48
-XButtonEvent.button 52
-XButtonEvent.same_screen 56
-XButtonEvent 60
-XFontProp.name 0
-XFontProp.card32 4
+XCreateWindowEvent 48
+XCreateWindowEvent.border_width 40
+XCreateWindowEvent.display 12
+XCreateWindowEvent.height 36
+XCreateWindowEvent.override_redirect 44
+XCreateWindowEvent.parent 16
+XCreateWindowEvent.send_event 8
+XCreateWindowEvent.serial 4
+XCreateWindowEvent.type 0
+XCreateWindowEvent.width 32
+XCreateWindowEvent.window 20
+XCreateWindowEvent.x 24
+XCreateWindowEvent.y 28
+XCrossingEvent 68
+XCrossingEvent.detail 52
+XCrossingEvent.display 12
+XCrossingEvent.focus 60
+XCrossingEvent.mode 48
+XCrossingEvent.root 20
+XCrossingEvent.same_screen 56
+XCrossingEvent.send_event 8
+XCrossingEvent.serial 4
+XCrossingEvent.state 64
+XCrossingEvent.subwindow 24
+XCrossingEvent.time 28
+XCrossingEvent.type 0
+XCrossingEvent.window 16
+XCrossingEvent.x 32
+XCrossingEvent.x_root 40
+XCrossingEvent.y 36
+XCrossingEvent.y_root 44
+XdbeSwapInfo 8
+XdbeSwapInfo.swap_action 4
+XdbeSwapInfo.swap_window 0
+XDestroyWindowEvent 24
+XDestroyWindowEvent.display 12
+XDestroyWindowEvent.event 16
+XDestroyWindowEvent.send_event 8
+XDestroyWindowEvent.serial 4
+XDestroyWindowEvent.type 0
+XDestroyWindowEvent.window 20
+XErrorEvent 20
+XErrorEvent.display 4
+XErrorEvent.error_code 16
+XErrorEvent.minor_code 18
+XErrorEvent.request_code 17
+XErrorEvent.resourceid 8
+XErrorEvent.serial 12
+XErrorEvent.type 0
+XEvent 96
+XEvent.pad 0
+XEvent.type 0
+XEvent.xany 0
+XEvent.xbutton 0
+XEvent.xcirculate 0
+XEvent.xcirculaterequest 0
+XEvent.xclient 0
+XEvent.xcolormap 0
+XEvent.xconfigure 0
+XEvent.xconfigurerequest 0
+XEvent.xcreatewindow 0
+XEvent.xcrossing 0
+XEvent.xdestroywindow 0
+XEvent.xerror 0
+XEvent.xexpose 0
+XEvent.xfocus 0
+XEvent.xgraphicsexpose 0
+XEvent.xgravity 0
+XEvent.xkey 0
+XEvent.xkeymap 0
+XEvent.xmap 0
+XEvent.xmapping 0
+XEvent.xmaprequest 0
+XEvent.xmotion 0
+XEvent.xnoexpose 0
+XEvent.xproperty 0
+XEvent.xreparent 0
+XEvent.xresizerequest 0
+XEvent.xselection 0
+XEvent.xselectionclear 0
+XEvent.xselectionrequest 0
+XEvent.xunmap 0
+XEvent.xvisibility 0
+XExposeEvent 40
+XExposeEvent.count 36
+XExposeEvent.display 12
+XExposeEvent.height 32
+XExposeEvent.send_event 8
+XExposeEvent.serial 4
+XExposeEvent.type 0
+XExposeEvent.width 28
+XExposeEvent.window 16
+XExposeEvent.x 20
+XExposeEvent.y 24
+XExtCodes 16
+XExtCodes.extension 0
+XExtCodes.first_error 12
+XExtCodes.first_event 8
+XExtCodes.major_opcode 4
+XExtData 16
+XExtData.free_private 8
+XExtData.next 4
+XExtData.number 0
+XExtData.private_data 12
+XFocusChangeEvent 28
+XFocusChangeEvent.detail 24
+XFocusChangeEvent.display 12
+XFocusChangeEvent.mode 20
+XFocusChangeEvent.send_event 8
+XFocusChangeEvent.serial 4
+XFocusChangeEvent.type 0
+XFocusChangeEvent.window 16
XFontProp 8
-XIMValuesList.count_values 0
-XIMValuesList.supported_values 4
-XIMValuesList 8
-XKeymapEvent.type 0
-XKeymapEvent.serial 4
-XKeymapEvent.send_event 8
-XKeymapEvent.display 12
-XKeymapEvent.window 16
-XKeymapEvent.key_vector 20
-XKeymapEvent 52
-XTextItem16.chars 0
-XTextItem16.nchars 4
-XTextItem16.delta 8
-XTextItem16.font 12
-XTextItem16 16
+XFontProp.card32 4
+XFontProp.name 0
+XFontSetExtents 16
+XFontSetExtents.max_ink_extent 0
+XFontSetExtents.max_logical_extent 8
+XFontStruct 80
+XFontStruct.all_chars_exist 28
+XFontStruct.ascent 72
+XFontStruct.descent 76
+XFontStruct.direction 8
+XFontStruct.ext_data 0
+XFontStruct.fid 4
+XFontStruct.max_bounds 56
+XFontStruct.max_byte1 24
+XFontStruct.max_char_or_byte2 16
+XFontStruct.min_bounds 44
+XFontStruct.min_byte1 20
+XFontStruct.min_char_or_byte2 12
+XFontStruct.n_properties 36
+XFontStruct.per_char 68
+XFontStruct.properties 40
+XGCValues 92
+XGCValues.arc_mode 40
+XGCValues.background 12
+XGCValues.cap_style 24
+XGCValues.clip_mask 80
+XGCValues.clip_x_origin 72
+XGCValues.clip_y_origin 76
+XGCValues.dashes 88
+XGCValues.dash_offset 84
+XGCValues.fill_rule 36
+XGCValues.fill_style 32
+XGCValues.font 60
+XGCValues.foreground 8
+XGCValues.function 0
+XGCValues.graphics_exposures 68
+XGCValues.join_style 28
+XGCValues.line_style 20
+XGCValues.line_width 16
+XGCValues.plane_mask 4
+XGCValues.stipple 48
+XGCValues.subwindow_mode 64
+XGCValues.tile 44
+XGCValues.ts_x_origin 52
+XGCValues.ts_y_origin 56
+XGraphicsExposeEvent 48
+XGraphicsExposeEvent.count 36
+XGraphicsExposeEvent.display 12
+XGraphicsExposeEvent.drawable 16
+XGraphicsExposeEvent.height 32
+XGraphicsExposeEvent.major_code 40
+XGraphicsExposeEvent.minor_code 44
+XGraphicsExposeEvent.send_event 8
+XGraphicsExposeEvent.serial 4
+XGraphicsExposeEvent.type 0
+XGraphicsExposeEvent.width 28
+XGraphicsExposeEvent.x 20
+XGraphicsExposeEvent.y 24
+XGravityEvent 32
+XGravityEvent.display 12
+XGravityEvent.event 16
+XGravityEvent.send_event 8
+XGravityEvent.serial 4
+XGravityEvent.type 0
+XGravityEvent.window 20
+XGravityEvent.x 24
+XGravityEvent.y 28
+XHostAddress 12
+XHostAddress.address 8
+XHostAddress.family 0
+XHostAddress.length 4
+XIconSize 24
+XIconSize.height_inc 20
+XIconSize.max_height 12
+XIconSize.max_width 8
+XIconSize.min_height 4
+XIconSize.min_width 0
+XIconSize.width_inc 16
+XImage 88
+XImage.bitmap_bit_order 28
+XImage.bitmap_pad 32
+XImage.bitmap_unit 24
+XImage.bits_per_pixel 44
+XImage.blue_mask 56
+XImage.byte_order 20
+XImage.bytes_per_line 40
+XImage.data 16
+XImage.depth 36
+XImage.f.add_pixel 84
+XImage.f.create_image 64
+XImage.f.destroy_image 68
+XImage.f.get_pixel 72
+XImage.format 12
+XImage.f.put_pixel 76
+XImage.f.sub_image 80
+XImage.green_mask 52
+XImage.height 4
+XImage.obdata 60
+XImage.red_mask 48
+XImage.width 0
+XImage.xoffset 8
+XIMCallback 8
+XIMCallback.callback 4
+XIMCallback.client_data 0
+XIMHotKeyTrigger 12
+XIMHotKeyTrigger.keysym 0
+XIMHotKeyTrigger.modifier 4
+XIMHotKeyTrigger.modifier_mask 8
+XIMHotKeyTriggers 8
+XIMHotKeyTriggers.key 4
+XIMHotKeyTriggers.num_hot_key 0
+XIMPreeditCaretCallbackStruct 12
+XIMPreeditCaretCallbackStruct.direction 4
+XIMPreeditCaretCallbackStruct.position 0
+XIMPreeditCaretCallbackStruct.style 8
+XIMPreeditDrawCallbackStruct 16
XIMPreeditDrawCallbackStruct.caret 0
XIMPreeditDrawCallbackStruct.chg_first 4
XIMPreeditDrawCallbackStruct.chg_length 8
XIMPreeditDrawCallbackStruct.text 12
-XIMPreeditDrawCallbackStruct 16
-XVisualInfo.visual 0
-XVisualInfo.visualid 4
-XVisualInfo.screen 8
-XVisualInfo.depth 12
-XVisualInfo.class 16
-XVisualInfo.red_mask 20
-XVisualInfo.green_mask 24
-XVisualInfo.blue_mask 28
-XVisualInfo.colormap_size 32
-XVisualInfo.bits_per_rgb 36
-XVisualInfo 40
-XkbControlsNotifyEvent.type 0
-XkbControlsNotifyEvent.serial 4
-XkbControlsNotifyEvent.send_event 8
-XkbControlsNotifyEvent.display 12
-XkbControlsNotifyEvent.time 16
-XkbControlsNotifyEvent.xkb_type 20
-XkbControlsNotifyEvent.device 24
-XkbControlsNotifyEvent.changed_ctrls 28
-XkbControlsNotifyEvent.enabled_ctrls 32
-XkbControlsNotifyEvent.enabled_ctrl_changes 36
-XkbControlsNotifyEvent.num_groups 40
-XkbControlsNotifyEvent.keycode 44
-XkbControlsNotifyEvent.event_type 45
-XkbControlsNotifyEvent.req_major 46
-XkbControlsNotifyEvent.req_minor 47
-XkbControlsNotifyEvent 48
-PropMwmHints.flags 0
-PropMwmHints.functions 4
-PropMwmHints.decorations 8
-PropMwmHints.inputMode 12
-PropMwmHints.status 16
-PropMwmHints 20
-XClientMessageEvent.type 0
-XClientMessageEvent.serial 4
-XClientMessageEvent.send_event 8
-XClientMessageEvent.display 12
-XClientMessageEvent.window 16
-XClientMessageEvent.message_type 20
-XClientMessageEvent.format 24
-XClientMessageEvent.data 28
-XClientMessageEvent 48
-XAnyEvent.type 0
-XAnyEvent.serial 4
-XAnyEvent.send_event 8
-XAnyEvent.display 12
-XAnyEvent.window 16
-XAnyEvent 20
-XkbIndicatorNotifyEvent.type 0
-XkbIndicatorNotifyEvent.serial 4
-XkbIndicatorNotifyEvent.send_event 8
-XkbIndicatorNotifyEvent.display 12
-XkbIndicatorNotifyEvent.time 16
-XkbIndicatorNotifyEvent.xkb_type 20
-XkbIndicatorNotifyEvent.device 24
-XkbIndicatorNotifyEvent.changed 28
-XkbIndicatorNotifyEvent.state 32
-XkbIndicatorNotifyEvent 36
-XIMPreeditStateNotifyCallbackStruct.state 0
XIMPreeditStateNotifyCallbackStruct 4
-XkbAnyEvent.type 0
-XkbAnyEvent.serial 4
-XkbAnyEvent.send_event 8
-XkbAnyEvent.display 12
-XkbAnyEvent.time 16
-XkbAnyEvent.xkb_type 20
-XkbAnyEvent.device 24
-XkbAnyEvent 28
-XMotionEvent.type 0
-XMotionEvent.serial 4
-XMotionEvent.send_event 8
-XMotionEvent.display 12
-XMotionEvent.window 16
-XMotionEvent.root 20
-XMotionEvent.subwindow 24
-XMotionEvent.time 28
-XMotionEvent.x 32
-XMotionEvent.y 36
-XMotionEvent.x_root 40
-XMotionEvent.y_root 44
-XMotionEvent.state 48
-XMotionEvent.is_hint 52
-XMotionEvent.same_screen 56
-XMotionEvent 60
-XIMHotKeyTriggers.num_hot_key 0
-XIMHotKeyTriggers.key 4
-XIMHotKeyTriggers 8
+XIMPreeditStateNotifyCallbackStruct.state 0
+XIMStatusDrawCallbackStruct 8
+XIMStatusDrawCallbackStruct.data 4
+XIMStatusDrawCallbackStruct.type 0
+XIMStringConversionCallbackStruct 16
+XIMStringConversionCallbackStruct.direction 4
+XIMStringConversionCallbackStruct.factor 10
+XIMStringConversionCallbackStruct.operation 8
+XIMStringConversionCallbackStruct.position 0
+XIMStringConversionCallbackStruct.text 12
+XIMStringConversionText 16
+XIMStringConversionText.encoding_is_wchar 8
+XIMStringConversionText.feedback 4
+XIMStringConversionText.length 0
+XIMStringConversionText.string 12
+XIMStyles 8
XIMStyles.count_styles 0
XIMStyles.supported_styles 4
-XIMStyles 8
-XkbExtensionDeviceNotifyEvent.type 0
-XkbExtensionDeviceNotifyEvent.serial 4
-XkbExtensionDeviceNotifyEvent.send_event 8
-XkbExtensionDeviceNotifyEvent.display 12
-XkbExtensionDeviceNotifyEvent.time 16
-XkbExtensionDeviceNotifyEvent.xkb_type 20
+XIMText 16
+XIMText.encoding_is_wchar 8
+XIMText.feedback 4
+XIMText.length 0
+XIMText.string 12
+XIMValuesList 8
+XIMValuesList.count_values 0
+XIMValuesList.supported_values 4
+XkbAccessXNotifyEvent 44
+XkbAccessXNotifyEvent.debounce_delay 40
+XkbAccessXNotifyEvent.detail 28
+XkbAccessXNotifyEvent.device 24
+XkbAccessXNotifyEvent.display 12
+XkbAccessXNotifyEvent.keycode 32
+XkbAccessXNotifyEvent.send_event 8
+XkbAccessXNotifyEvent.serial 4
+XkbAccessXNotifyEvent.sk_delay 36
+XkbAccessXNotifyEvent.time 16
+XkbAccessXNotifyEvent.type 0
+XkbAccessXNotifyEvent.xkb_type 20
+XkbActionMessageEvent 56
+XkbActionMessageEvent.device 24
+XkbActionMessageEvent.display 12
+XkbActionMessageEvent.group 40
+XkbActionMessageEvent.keycode 28
+XkbActionMessageEvent.key_event_follows 36
+XkbActionMessageEvent.message 48
+XkbActionMessageEvent.mods 44
+XkbActionMessageEvent.press 32
+XkbActionMessageEvent.send_event 8
+XkbActionMessageEvent.serial 4
+XkbActionMessageEvent.time 16
+XkbActionMessageEvent.type 0
+XkbActionMessageEvent.xkb_type 20
+XkbAnyEvent 28
+XkbAnyEvent.device 24
+XkbAnyEvent.display 12
+XkbAnyEvent.send_event 8
+XkbAnyEvent.serial 4
+XkbAnyEvent.time 16
+XkbAnyEvent.type 0
+XkbAnyEvent.xkb_type 20
+XkbBellNotifyEvent 60
+XkbBellNotifyEvent.bell_class 40
+XkbBellNotifyEvent.bell_id 44
+XkbBellNotifyEvent.device 24
+XkbBellNotifyEvent.display 12
+XkbBellNotifyEvent.duration 36
+XkbBellNotifyEvent.event_only 56
+XkbBellNotifyEvent.name 48
+XkbBellNotifyEvent.percent 28
+XkbBellNotifyEvent.pitch 32
+XkbBellNotifyEvent.send_event 8
+XkbBellNotifyEvent.serial 4
+XkbBellNotifyEvent.time 16
+XkbBellNotifyEvent.type 0
+XkbBellNotifyEvent.window 52
+XkbBellNotifyEvent.xkb_type 20
+XkbCompatMapNotifyEvent 44
+XkbCompatMapNotifyEvent.changed_groups 28
+XkbCompatMapNotifyEvent.device 24
+XkbCompatMapNotifyEvent.display 12
+XkbCompatMapNotifyEvent.first_si 32
+XkbCompatMapNotifyEvent.num_si 36
+XkbCompatMapNotifyEvent.num_total_si 40
+XkbCompatMapNotifyEvent.send_event 8
+XkbCompatMapNotifyEvent.serial 4
+XkbCompatMapNotifyEvent.time 16
+XkbCompatMapNotifyEvent.type 0
+XkbCompatMapNotifyEvent.xkb_type 20
+XkbControlsNotifyEvent 48
+XkbControlsNotifyEvent.changed_ctrls 28
+XkbControlsNotifyEvent.device 24
+XkbControlsNotifyEvent.display 12
+XkbControlsNotifyEvent.enabled_ctrl_changes 36
+XkbControlsNotifyEvent.enabled_ctrls 32
+XkbControlsNotifyEvent.event_type 45
+XkbControlsNotifyEvent.keycode 44
+XkbControlsNotifyEvent.num_groups 40
+XkbControlsNotifyEvent.req_major 46
+XkbControlsNotifyEvent.req_minor 47
+XkbControlsNotifyEvent.send_event 8
+XkbControlsNotifyEvent.serial 4
+XkbControlsNotifyEvent.time 16
+XkbControlsNotifyEvent.type 0
+XkbControlsNotifyEvent.xkb_type 20
+XkbEvent 96
+XkbEvent.accessx 0
+XkbEvent.any 0
+XkbEvent.bell 0
+XkbEvent.compat 0
+XkbEvent.core 0
+XkbEvent.ctrls 0
+XkbEvent.device 0
+XkbEvent.indicators 0
+XkbEvent.map 0
+XkbEvent.message 0
+XkbEvent.names 0
+XkbEvent.new_kbd 0
+XkbEvent.state 0
+XkbEvent.type 0
+XkbExtensionDeviceNotifyEvent 64
XkbExtensionDeviceNotifyEvent.device 24
-XkbExtensionDeviceNotifyEvent.reason 28
-XkbExtensionDeviceNotifyEvent.supported 32
-XkbExtensionDeviceNotifyEvent.unsupported 36
+XkbExtensionDeviceNotifyEvent.display 12
XkbExtensionDeviceNotifyEvent.first_btn 40
-XkbExtensionDeviceNotifyEvent.num_btns 44
-XkbExtensionDeviceNotifyEvent.leds_defined 48
-XkbExtensionDeviceNotifyEvent.led_state 52
XkbExtensionDeviceNotifyEvent.led_class 56
XkbExtensionDeviceNotifyEvent.led_id 60
-XkbExtensionDeviceNotifyEvent 64
-XwcTextItem.chars 0
-XwcTextItem.nchars 4
-XwcTextItem.delta 8
-XwcTextItem.font_set 12
-XwcTextItem 16
-XClassHint.res_name 0
-XClassHint.res_class 4
-XClassHint 8
-XChar2b.byte1 0
-XChar2b.byte2 1
-XChar2b 2
-XSetWindowAttributes.background_pixmap 0
-XSetWindowAttributes.background_pixel 4
-XSetWindowAttributes.border_pixmap 8
-XSetWindowAttributes.border_pixel 12
-XSetWindowAttributes.bit_gravity 16
-XSetWindowAttributes.win_gravity 20
-XSetWindowAttributes.backing_store 24
-XSetWindowAttributes.backing_planes 28
-XSetWindowAttributes.backing_pixel 32
-XSetWindowAttributes.save_under 36
-XSetWindowAttributes.event_mask 40
-XSetWindowAttributes.do_not_propagate_mask 44
-XSetWindowAttributes.override_redirect 48
-XSetWindowAttributes.colormap 52
-XSetWindowAttributes.cursor 56
-XSetWindowAttributes 60
-XRenderPictFormat.id 0
-XRenderPictFormat.type 4
-XRenderPictFormat.depth 8
-XRenderPictFormat.direct 12
-XRenderPictFormat.colormap 28
-XRenderPictFormat 32
-XReparentEvent.type 0
-XReparentEvent.serial 4
-XReparentEvent.send_event 8
-XReparentEvent.display 12
-XReparentEvent.event 16
-XReparentEvent.window 20
-XReparentEvent.parent 24
-XReparentEvent.x 28
-XReparentEvent.y 32
-XReparentEvent.override_redirect 36
-XReparentEvent 40
-XCirculateRequestEvent.type 0
-XCirculateRequestEvent.serial 4
-XCirculateRequestEvent.send_event 8
-XCirculateRequestEvent.display 12
-XCirculateRequestEvent.parent 16
-XCirculateRequestEvent.window 20
-XCirculateRequestEvent.place 24
-XCirculateRequestEvent 28
-XImage.width 0
-XImage.height 4
-XImage.xoffset 8
-XImage.format 12
-XImage.data 16
-XImage.byte_order 20
-XImage.bitmap_unit 24
-XImage.bitmap_bit_order 28
-XImage.bitmap_pad 32
-XImage.depth 36
-XImage.bytes_per_line 40
-XImage.bits_per_pixel 44
-XImage.red_mask 48
-XImage.green_mask 52
-XImage.blue_mask 56
-XImage.obdata 60
-XImage.f.create_image 64
-XImage.f.destroy_image 68
-XImage.f.get_pixel 72
-XImage.f.put_pixel 76
-XImage.f.sub_image 80
-XImage.f.add_pixel 84
-XImage 88
-XKeyEvent.type 0
-XKeyEvent.serial 4
-XKeyEvent.send_event 8
-XKeyEvent.display 12
-XKeyEvent.window 16
-XKeyEvent.root 20
-XKeyEvent.subwindow 24
-XKeyEvent.time 28
-XKeyEvent.x 32
-XKeyEvent.y 36
-XKeyEvent.x_root 40
-XKeyEvent.y_root 44
-XKeyEvent.state 48
-XKeyEvent.keycode 52
-XKeyEvent.same_screen 56
-XKeyEvent 60
-XkbActionMessageEvent.type 0
-XkbActionMessageEvent.serial 4
-XkbActionMessageEvent.send_event 8
-XkbActionMessageEvent.display 12
-XkbActionMessageEvent.time 16
-XkbActionMessageEvent.xkb_type 20
-XkbActionMessageEvent.device 24
-XkbActionMessageEvent.keycode 28
-XkbActionMessageEvent.press 32
-XkbActionMessageEvent.key_event_follows 36
-XkbActionMessageEvent.group 40
-XkbActionMessageEvent.mods 44
-XkbActionMessageEvent.message 48
-XkbActionMessageEvent 56
-XdbeSwapInfo.swap_window 0
-XdbeSwapInfo.swap_action 4
-XdbeSwapInfo 8
-XTextItem.chars 0
-XTextItem.nchars 4
-XTextItem.delta 8
-XTextItem.font 12
-XTextItem 16
-XModifierKeymap.max_keypermod 0
-XModifierKeymap.modifiermap 4
-XModifierKeymap 8
-XCharStruct.lbearing 0
-XCharStruct.rbearing 2
-XCharStruct.width 4
-XCharStruct.ascent 6
-XCharStruct.descent 8
-XCharStruct.attributes 10
-XCharStruct 12
-XGravityEvent.type 0
-XGravityEvent.serial 4
-XGravityEvent.send_event 8
-XGravityEvent.display 12
-XGravityEvent.event 16
-XGravityEvent.window 20
-XGravityEvent.x 24
-XGravityEvent.y 28
-XGravityEvent 32
-Visual.ext_data 0
-Visual.visualid 4
-Visual.class 8
-Visual.red_mask 12
-Visual.green_mask 16
-Visual.blue_mask 20
-Visual.bits_per_rgb 24
-Visual.map_entries 28
-Visual 32
-XOMOrientation.num_orientation 0
-XOMOrientation.orientation 4
-XOMOrientation 8
-XkbAccessXNotifyEvent.type 0
-XkbAccessXNotifyEvent.serial 4
-XkbAccessXNotifyEvent.send_event 8
-XkbAccessXNotifyEvent.display 12
-XkbAccessXNotifyEvent.time 16
-XkbAccessXNotifyEvent.xkb_type 20
-XkbAccessXNotifyEvent.device 24
-XkbAccessXNotifyEvent.detail 28
-XkbAccessXNotifyEvent.keycode 32
-XkbAccessXNotifyEvent.sk_delay 36
-XkbAccessXNotifyEvent.debounce_delay 40
-XkbAccessXNotifyEvent 44
-XWindowAttributes.x 0
-XWindowAttributes.y 4
-XWindowAttributes.width 8
-XWindowAttributes.height 12
-XWindowAttributes.border_width 16
-XWindowAttributes.depth 20
-XWindowAttributes.visual 24
-XWindowAttributes.root 28
-XWindowAttributes.class 32
-XWindowAttributes.bit_gravity 36
-XWindowAttributes.win_gravity 40
-XWindowAttributes.backing_store 44
-XWindowAttributes.backing_planes 48
-XWindowAttributes.backing_pixel 52
-XWindowAttributes.save_under 56
-XWindowAttributes.colormap 60
-XWindowAttributes.map_installed 64
-XWindowAttributes.map_state 68
-XWindowAttributes.all_event_masks 72
-XWindowAttributes.your_event_mask 76
-XWindowAttributes.do_not_propagate_mask 80
-XWindowAttributes.override_redirect 84
-XWindowAttributes.screen 88
-XWindowAttributes 92
-XmbTextItem.chars 0
-XmbTextItem.nchars 4
-XmbTextItem.delta 8
-XmbTextItem.font_set 12
-XmbTextItem 16
-XMappingEvent.type 0
-XMappingEvent.serial 4
-XMappingEvent.send_event 8
-XMappingEvent.display 12
-XMappingEvent.window 16
-XMappingEvent.request 20
-XMappingEvent.first_keycode 24
-XMappingEvent.count 28
-XMappingEvent 32
-XSizeHints.flags 0
-XSizeHints.x 4
-XSizeHints.y 8
-XSizeHints.width 12
-XSizeHints.height 16
-XSizeHints.min_width 20
-XSizeHints.min_height 24
-XSizeHints.max_width 28
-XSizeHints.max_height 32
-XSizeHints.width_inc 36
-XSizeHints.height_inc 40
-XSizeHints.min_aspect.x 44
-XSizeHints.min_aspect.y 48
-XSizeHints.max_aspect.x 52
-XSizeHints.max_aspect.y 56
-XSizeHints.base_width 60
-XSizeHints.base_height 64
-XSizeHints.win_gravity 68
-XSizeHints 72
-XUnmapEvent.type 0
-XUnmapEvent.serial 4
-XUnmapEvent.send_event 8
-XUnmapEvent.display 12
-XUnmapEvent.event 16
-XUnmapEvent.window 20
-XUnmapEvent.from_configure 24
-XUnmapEvent 28
-awtImageData.Depth 0
-awtImageData.wsImageFormat 4
-awtImageData.clrdata 16
-awtImageData.convert 48
-awtImageData 304
-XkbStateNotifyEvent.type 0
-XkbStateNotifyEvent.serial 4
-XkbStateNotifyEvent.send_event 8
-XkbStateNotifyEvent.display 12
-XkbStateNotifyEvent.time 16
-XkbStateNotifyEvent.xkb_type 20
-XkbStateNotifyEvent.device 24
-XkbStateNotifyEvent.changed 28
-XkbStateNotifyEvent.group 32
-XkbStateNotifyEvent.base_group 36
-XkbStateNotifyEvent.latched_group 40
-XkbStateNotifyEvent.locked_group 44
-XkbStateNotifyEvent.mods 48
-XkbStateNotifyEvent.base_mods 52
-XkbStateNotifyEvent.latched_mods 56
-XkbStateNotifyEvent.locked_mods 60
-XkbStateNotifyEvent.compat_state 64
-XkbStateNotifyEvent.grab_mods 68
-XkbStateNotifyEvent.compat_grab_mods 69
-XkbStateNotifyEvent.lookup_mods 70
-XkbStateNotifyEvent.compat_lookup_mods 71
-XkbStateNotifyEvent.ptr_buttons 72
-XkbStateNotifyEvent.keycode 76
-XkbStateNotifyEvent.event_type 77
-XkbStateNotifyEvent.req_major 78
-XkbStateNotifyEvent.req_minor 79
-XkbStateNotifyEvent 80
-XExposeEvent.type 0
-XExposeEvent.serial 4
-XExposeEvent.send_event 8
-XExposeEvent.display 12
-XExposeEvent.window 16
-XExposeEvent.x 20
-XExposeEvent.y 24
-XExposeEvent.width 28
-XExposeEvent.height 32
-XExposeEvent.count 36
-XExposeEvent 40
-XkbMapNotifyEvent.type 0
-XkbMapNotifyEvent.serial 4
-XkbMapNotifyEvent.send_event 8
-XkbMapNotifyEvent.display 12
-XkbMapNotifyEvent.time 16
-XkbMapNotifyEvent.xkb_type 20
-XkbMapNotifyEvent.device 24
+XkbExtensionDeviceNotifyEvent.leds_defined 48
+XkbExtensionDeviceNotifyEvent.led_state 52
+XkbExtensionDeviceNotifyEvent.num_btns 44
+XkbExtensionDeviceNotifyEvent.reason 28
+XkbExtensionDeviceNotifyEvent.send_event 8
+XkbExtensionDeviceNotifyEvent.serial 4
+XkbExtensionDeviceNotifyEvent.supported 32
+XkbExtensionDeviceNotifyEvent.time 16
+XkbExtensionDeviceNotifyEvent.type 0
+XkbExtensionDeviceNotifyEvent.unsupported 36
+XkbExtensionDeviceNotifyEvent.xkb_type 20
+XkbIndicatorNotifyEvent 36
+XkbIndicatorNotifyEvent.changed 28
+XkbIndicatorNotifyEvent.device 24
+XkbIndicatorNotifyEvent.display 12
+XkbIndicatorNotifyEvent.send_event 8
+XkbIndicatorNotifyEvent.serial 4
+XkbIndicatorNotifyEvent.state 32
+XkbIndicatorNotifyEvent.time 16
+XkbIndicatorNotifyEvent.type 0
+XkbIndicatorNotifyEvent.xkb_type 20
+XkbMapNotifyEvent 80
XkbMapNotifyEvent.changed 28
-XkbMapNotifyEvent.flags 32
-XkbMapNotifyEvent.first_type 36
-XkbMapNotifyEvent.num_types 40
-XkbMapNotifyEvent.min_key_code 44
-XkbMapNotifyEvent.max_key_code 45
-XkbMapNotifyEvent.first_key_sym 46
+XkbMapNotifyEvent.device 24
+XkbMapNotifyEvent.display 12
XkbMapNotifyEvent.first_key_act 47
XkbMapNotifyEvent.first_key_behavior 48
XkbMapNotifyEvent.first_key_explicit 49
+XkbMapNotifyEvent.first_key_sym 46
XkbMapNotifyEvent.first_modmap_key 50
+XkbMapNotifyEvent.first_type 36
XkbMapNotifyEvent.first_vmodmap_key 51
-XkbMapNotifyEvent.num_key_syms 52
+XkbMapNotifyEvent.flags 32
+XkbMapNotifyEvent.max_key_code 45
+XkbMapNotifyEvent.min_key_code 44
XkbMapNotifyEvent.num_key_acts 56
XkbMapNotifyEvent.num_key_behaviors 60
XkbMapNotifyEvent.num_key_explicit 64
+XkbMapNotifyEvent.num_key_syms 52
XkbMapNotifyEvent.num_modmap_keys 68
+XkbMapNotifyEvent.num_types 40
XkbMapNotifyEvent.num_vmodmap_keys 72
+XkbMapNotifyEvent.send_event 8
+XkbMapNotifyEvent.serial 4
+XkbMapNotifyEvent.time 16
+XkbMapNotifyEvent.type 0
XkbMapNotifyEvent.vmods 76
-XkbMapNotifyEvent 80
-XGCValues.function 0
-XGCValues.plane_mask 4
-XGCValues.foreground 8
-XGCValues.background 12
-XGCValues.line_width 16
-XGCValues.line_style 20
-XGCValues.cap_style 24
-XGCValues.join_style 28
-XGCValues.fill_style 32
-XGCValues.fill_rule 36
-XGCValues.arc_mode 40
-XGCValues.tile 44
-XGCValues.stipple 48
-XGCValues.ts_x_origin 52
-XGCValues.ts_y_origin 56
-XGCValues.font 60
-XGCValues.subwindow_mode 64
-XGCValues.graphics_exposures 68
-XGCValues.clip_x_origin 72
-XGCValues.clip_y_origin 76
-XGCValues.clip_mask 80
-XGCValues.dash_offset 84
-XGCValues.dashes 88
-XGCValues 92
-XFocusChangeEvent.type 0
-XFocusChangeEvent.serial 4
-XFocusChangeEvent.send_event 8
-XFocusChangeEvent.display 12
-XFocusChangeEvent.window 16
-XFocusChangeEvent.mode 20
-XFocusChangeEvent.detail 24
-XFocusChangeEvent 28
-XPixmapFormatValues.depth 0
-XPixmapFormatValues.bits_per_pixel 4
-XPixmapFormatValues.scanline_pad 8
-XPixmapFormatValues 12
-XMapEvent.type 0
-XMapEvent.serial 4
-XMapEvent.send_event 8
-XMapEvent.display 12
-XMapEvent.event 16
-XMapEvent.window 20
-XMapEvent.override_redirect 24
-XMapEvent 28
-XkbBellNotifyEvent.type 0
-XkbBellNotifyEvent.serial 4
-XkbBellNotifyEvent.send_event 8
-XkbBellNotifyEvent.display 12
-XkbBellNotifyEvent.time 16
-XkbBellNotifyEvent.xkb_type 20
-XkbBellNotifyEvent.device 24
-XkbBellNotifyEvent.percent 28
-XkbBellNotifyEvent.pitch 32
-XkbBellNotifyEvent.duration 36
-XkbBellNotifyEvent.bell_class 40
-XkbBellNotifyEvent.bell_id 44
-XkbBellNotifyEvent.name 48
-XkbBellNotifyEvent.window 52
-XkbBellNotifyEvent.event_only 56
-XkbBellNotifyEvent 60
-XIMStringConversionText.length 0
-XIMStringConversionText.feedback 4
-XIMStringConversionText.encoding_is_wchar 8
-XIMStringConversionText.string 12
-XIMStringConversionText 16
-XKeyboardState.key_click_percent 0
-XKeyboardState.bell_percent 4
-XKeyboardState.bell_pitch 8
-XKeyboardState.bell_duration 12
-XKeyboardState.led_mask 16
-XKeyboardState.global_auto_repeat 20
-XKeyboardState.auto_repeats 24
-XKeyboardState 56
-XkbEvent.type 0
-XkbEvent.any 0
-XkbEvent.new_kbd 0
-XkbEvent.map 0
-XkbEvent.state 0
-XkbEvent.ctrls 0
-XkbEvent.indicators 0
-XkbEvent.names 0
-XkbEvent.compat 0
-XkbEvent.bell 0
-XkbEvent.message 0
-XkbEvent.accessx 0
-XkbEvent.device 0
-XkbEvent.core 0
-XkbEvent 96
-XPoint.x 0
-XPoint.y 2
-XPoint 4
-XSegment.x1 0
-XSegment.y1 2
-XSegment.x2 4
-XSegment.y2 6
-XSegment 8
-XIconSize.min_width 0
-XIconSize.min_height 4
-XIconSize.max_width 8
-XIconSize.max_height 12
-XIconSize.width_inc 16
-XIconSize.height_inc 20
-XIconSize 24
-XIMCallback.client_data 0
-XIMCallback.callback 4
-XIMCallback 8
-XConfigureEvent.type 0
-XConfigureEvent.serial 4
-XConfigureEvent.send_event 8
-XConfigureEvent.display 12
-XConfigureEvent.event 16
-XConfigureEvent.window 20
-XConfigureEvent.x 24
-XConfigureEvent.y 28
-XConfigureEvent.width 32
-XConfigureEvent.height 36
-XConfigureEvent.border_width 40
-XConfigureEvent.above 44
-XConfigureEvent.override_redirect 48
-XConfigureEvent 52
-XRectangle.x 0
-XRectangle.y 2
-XRectangle.width 4
-XRectangle.height 6
-XRectangle 8
-XkbNamesNotifyEvent.type 0
-XkbNamesNotifyEvent.serial 4
-XkbNamesNotifyEvent.send_event 8
-XkbNamesNotifyEvent.display 12
-XkbNamesNotifyEvent.time 16
-XkbNamesNotifyEvent.xkb_type 20
-XkbNamesNotifyEvent.device 24
+XkbMapNotifyEvent.xkb_type 20
+XkbNamesNotifyEvent 76
XkbNamesNotifyEvent.changed 28
-XkbNamesNotifyEvent.first_type 32
-XkbNamesNotifyEvent.num_types 36
-XkbNamesNotifyEvent.first_lvl 40
-XkbNamesNotifyEvent.num_lvls 44
-XkbNamesNotifyEvent.num_aliases 48
-XkbNamesNotifyEvent.num_radio_groups 52
-XkbNamesNotifyEvent.changed_vmods 56
XkbNamesNotifyEvent.changed_groups 60
XkbNamesNotifyEvent.changed_indicators 64
+XkbNamesNotifyEvent.changed_vmods 56
+XkbNamesNotifyEvent.device 24
+XkbNamesNotifyEvent.display 12
XkbNamesNotifyEvent.first_key 68
+XkbNamesNotifyEvent.first_lvl 40
+XkbNamesNotifyEvent.first_type 32
+XkbNamesNotifyEvent.num_aliases 48
XkbNamesNotifyEvent.num_keys 72
-XkbNamesNotifyEvent 76
-XCreateWindowEvent.type 0
-XCreateWindowEvent.serial 4
-XCreateWindowEvent.send_event 8
-XCreateWindowEvent.display 12
-XCreateWindowEvent.parent 16
-XCreateWindowEvent.window 20
-XCreateWindowEvent.x 24
-XCreateWindowEvent.y 28
-XCreateWindowEvent.width 32
-XCreateWindowEvent.height 36
-XCreateWindowEvent.border_width 40
-XCreateWindowEvent.override_redirect 44
-XCreateWindowEvent 48
-XVisibilityEvent.type 0
-XVisibilityEvent.serial 4
-XVisibilityEvent.send_event 8
-XVisibilityEvent.display 12
-XVisibilityEvent.window 16
-XVisibilityEvent.state 20
-XVisibilityEvent 24
-XWMHints.flags 0
-XWMHints.initial_state 8
-XWMHints.icon_pixmap 12
-XWMHints.icon_window 16
-XWMHints.icon_x 20
-XWMHints.icon_y 24
-XWMHints.icon_mask 28
-XWMHints.input 4
-XWMHints.window_group 32
-XWMHints 36
-XCrossingEvent.type 0
-XCrossingEvent.serial 4
-XCrossingEvent.send_event 8
-XCrossingEvent.display 12
-XCrossingEvent.window 16
-XCrossingEvent.root 20
-XCrossingEvent.subwindow 24
-XCrossingEvent.time 28
-XCrossingEvent.x 32
-XCrossingEvent.y 36
-XCrossingEvent.x_root 40
-XCrossingEvent.y_root 44
-XCrossingEvent.mode 48
-XCrossingEvent.detail 52
-XCrossingEvent.same_screen 56
-XCrossingEvent.focus 60
-XCrossingEvent.state 64
-XCrossingEvent 68
-XSelectionRequestEvent.type 0
-XSelectionRequestEvent.serial 4
-XSelectionRequestEvent.send_event 8
-XSelectionRequestEvent.display 12
-XSelectionRequestEvent.owner 16
-XSelectionRequestEvent.requestor 20
-XSelectionRequestEvent.selection 24
-XSelectionRequestEvent.target 28
-XSelectionRequestEvent.property 32
-XSelectionRequestEvent.time 36
-XSelectionRequestEvent 40
-XNoExposeEvent.type 0
-XNoExposeEvent.serial 4
-XNoExposeEvent.send_event 8
+XkbNamesNotifyEvent.num_lvls 44
+XkbNamesNotifyEvent.num_radio_groups 52
+XkbNamesNotifyEvent.num_types 36
+XkbNamesNotifyEvent.send_event 8
+XkbNamesNotifyEvent.serial 4
+XkbNamesNotifyEvent.time 16
+XkbNamesNotifyEvent.type 0
+XkbNamesNotifyEvent.xkb_type 20
+XkbNewKeyboardNotifyEvent 56
+XkbNewKeyboardNotifyEvent.changed 48
+XkbNewKeyboardNotifyEvent.device 24
+XkbNewKeyboardNotifyEvent.display 12
+XkbNewKeyboardNotifyEvent.max_key_code 36
+XkbNewKeyboardNotifyEvent.min_key_code 32
+XkbNewKeyboardNotifyEvent.old_device 28
+XkbNewKeyboardNotifyEvent.old_max_key_code 44
+XkbNewKeyboardNotifyEvent.old_min_key_code 40
+XkbNewKeyboardNotifyEvent.req_major 52
+XkbNewKeyboardNotifyEvent.req_minor 53
+XkbNewKeyboardNotifyEvent.send_event 8
+XkbNewKeyboardNotifyEvent.serial 4
+XkbNewKeyboardNotifyEvent.time 16
+XkbNewKeyboardNotifyEvent.type 0
+XkbNewKeyboardNotifyEvent.xkb_type 20
+XkbStateNotifyEvent 80
+XkbStateNotifyEvent.base_group 36
+XkbStateNotifyEvent.base_mods 52
+XkbStateNotifyEvent.changed 28
+XkbStateNotifyEvent.compat_grab_mods 69
+XkbStateNotifyEvent.compat_lookup_mods 71
+XkbStateNotifyEvent.compat_state 64
+XkbStateNotifyEvent.device 24
+XkbStateNotifyEvent.display 12
+XkbStateNotifyEvent.event_type 77
+XkbStateNotifyEvent.grab_mods 68
+XkbStateNotifyEvent.group 32
+XkbStateNotifyEvent.keycode 76
+XkbStateNotifyEvent.latched_group 40
+XkbStateNotifyEvent.latched_mods 56
+XkbStateNotifyEvent.locked_group 44
+XkbStateNotifyEvent.locked_mods 60
+XkbStateNotifyEvent.lookup_mods 70
+XkbStateNotifyEvent.mods 48
+XkbStateNotifyEvent.ptr_buttons 72
+XkbStateNotifyEvent.req_major 78
+XkbStateNotifyEvent.req_minor 79
+XkbStateNotifyEvent.send_event 8
+XkbStateNotifyEvent.serial 4
+XkbStateNotifyEvent.time 16
+XkbStateNotifyEvent.type 0
+XkbStateNotifyEvent.xkb_type 20
+XKeyboardControl 32
+XKeyboardControl.auto_repeat_mode 28
+XKeyboardControl.bell_duration 12
+XKeyboardControl.bell_percent 4
+XKeyboardControl.bell_pitch 8
+XKeyboardControl.key 24
+XKeyboardControl.key_click_percent 0
+XKeyboardControl.led 16
+XKeyboardControl.led_mode 20
+XKeyboardState 56
+XKeyboardState.auto_repeats 24
+XKeyboardState.bell_duration 12
+XKeyboardState.bell_percent 4
+XKeyboardState.bell_pitch 8
+XKeyboardState.global_auto_repeat 20
+XKeyboardState.key_click_percent 0
+XKeyboardState.led_mask 16
+XKeyEvent 60
+XKeyEvent.display 12
+XKeyEvent.keycode 52
+XKeyEvent.root 20
+XKeyEvent.same_screen 56
+XKeyEvent.send_event 8
+XKeyEvent.serial 4
+XKeyEvent.state 48
+XKeyEvent.subwindow 24
+XKeyEvent.time 28
+XKeyEvent.type 0
+XKeyEvent.window 16
+XKeyEvent.x 32
+XKeyEvent.x_root 40
+XKeyEvent.y 36
+XKeyEvent.y_root 44
+XKeymapEvent 52
+XKeymapEvent.display 12
+XKeymapEvent.key_vector 20
+XKeymapEvent.send_event 8
+XKeymapEvent.serial 4
+XKeymapEvent.type 0
+XKeymapEvent.window 16
+XMapEvent 28
+XMapEvent.display 12
+XMapEvent.event 16
+XMapEvent.override_redirect 24
+XMapEvent.send_event 8
+XMapEvent.serial 4
+XMapEvent.type 0
+XMapEvent.window 20
+XMappingEvent 32
+XMappingEvent.count 28
+XMappingEvent.display 12
+XMappingEvent.first_keycode 24
+XMappingEvent.request 20
+XMappingEvent.send_event 8
+XMappingEvent.serial 4
+XMappingEvent.type 0
+XMappingEvent.window 16
+XMapRequestEvent 24
+XMapRequestEvent.display 12
+XMapRequestEvent.parent 16
+XMapRequestEvent.send_event 8
+XMapRequestEvent.serial 4
+XMapRequestEvent.type 0
+XMapRequestEvent.window 20
+XmbTextItem 16
+XmbTextItem.chars 0
+XmbTextItem.delta 8
+XmbTextItem.font_set 12
+XmbTextItem.nchars 4
+XModifierKeymap 8
+XModifierKeymap.max_keypermod 0
+XModifierKeymap.modifiermap 4
+XMotionEvent 60
+XMotionEvent.display 12
+XMotionEvent.is_hint 52
+XMotionEvent.root 20
+XMotionEvent.same_screen 56
+XMotionEvent.send_event 8
+XMotionEvent.serial 4
+XMotionEvent.state 48
+XMotionEvent.subwindow 24
+XMotionEvent.time 28
+XMotionEvent.type 0
+XMotionEvent.window 16
+XMotionEvent.x 32
+XMotionEvent.x_root 40
+XMotionEvent.y 36
+XMotionEvent.y_root 44
+XNoExposeEvent 28
XNoExposeEvent.display 12
XNoExposeEvent.drawable 16
XNoExposeEvent.major_code 20
XNoExposeEvent.minor_code 24
-XNoExposeEvent 28
-XHostAddress.family 0
-XHostAddress.length 4
-XHostAddress.address 8
-XHostAddress 12
-XColormapEvent.type 0
-XColormapEvent.serial 4
-XColormapEvent.send_event 8
-XColormapEvent.display 12
-XColormapEvent.window 16
-XColormapEvent.colormap 20
-XColormapEvent.new 24
-XColormapEvent.state 28
-XColormapEvent 32
-ColorEntry.r 0
-ColorEntry.g 1
-ColorEntry.b 2
-ColorEntry.flags 3
-ColorEntry 4
-XResizeRequestEvent.type 0
-XResizeRequestEvent.serial 4
-XResizeRequestEvent.send_event 8
-XResizeRequestEvent.display 12
-XResizeRequestEvent.window 16
-XResizeRequestEvent.width 20
-XResizeRequestEvent.height 24
-XResizeRequestEvent 28
-Depth.depth 0
-Depth.nvisuals 4
-Depth.visuals 8
-Depth 12
-XPropertyEvent.type 0
-XPropertyEvent.serial 4
-XPropertyEvent.send_event 8
-XPropertyEvent.display 12
-XPropertyEvent.window 16
-XPropertyEvent.atom 20
-XPropertyEvent.time 24
-XPropertyEvent.state 28
+XNoExposeEvent.send_event 8
+XNoExposeEvent.serial 4
+XNoExposeEvent.type 0
+XOMCharSetList 8
+XOMCharSetList.charset_count 0
+XOMCharSetList.charset_list 4
+XOMFontInfo 12
+XOMFontInfo.font_name_list 8
+XOMFontInfo.font_struct_list 4
+XOMFontInfo.num_font 0
+XOMOrientation 8
+XOMOrientation.num_orientation 0
+XOMOrientation.orientation 4
+XPixmapFormatValues 12
+XPixmapFormatValues.bits_per_pixel 4
+XPixmapFormatValues.depth 0
+XPixmapFormatValues.scanline_pad 8
+XPoint 4
+XPoint.x 0
+XPoint.y 2
XPropertyEvent 32
-XDestroyWindowEvent.type 0
-XDestroyWindowEvent.serial 4
-XDestroyWindowEvent.send_event 8
-XDestroyWindowEvent.display 12
-XDestroyWindowEvent.event 16
-XDestroyWindowEvent.window 20
-XDestroyWindowEvent 24
-XStandardColormap.colormap 0
-XStandardColormap.red_max 4
-XStandardColormap.red_mult 8
-XStandardColormap.green_max 12
-XStandardColormap.green_mult 16
+XPropertyEvent.atom 20
+XPropertyEvent.display 12
+XPropertyEvent.send_event 8
+XPropertyEvent.serial 4
+XPropertyEvent.state 28
+XPropertyEvent.time 24
+XPropertyEvent.type 0
+XPropertyEvent.window 16
+XRectangle 8
+XRectangle.height 6
+XRectangle.width 4
+XRectangle.x 0
+XRectangle.y 2
+XRenderDirectFormat 16
+XRenderDirectFormat.alpha 12
+XRenderDirectFormat.alphaMask 14
+XRenderDirectFormat.blue 8
+XRenderDirectFormat.blueMask 10
+XRenderDirectFormat.green 4
+XRenderDirectFormat.greenMask 6
+XRenderDirectFormat.red 0
+XRenderDirectFormat.redMask 2
+XRenderPictFormat 32
+XRenderPictFormat.colormap 28
+XRenderPictFormat.depth 8
+XRenderPictFormat.direct 12
+XRenderPictFormat.id 0
+XRenderPictFormat.type 4
+XReparentEvent 40
+XReparentEvent.display 12
+XReparentEvent.event 16
+XReparentEvent.override_redirect 36
+XReparentEvent.parent 24
+XReparentEvent.send_event 8
+XReparentEvent.serial 4
+XReparentEvent.type 0
+XReparentEvent.window 20
+XReparentEvent.x 28
+XReparentEvent.y 32
+XResizeRequestEvent 28
+XResizeRequestEvent.display 12
+XResizeRequestEvent.height 24
+XResizeRequestEvent.send_event 8
+XResizeRequestEvent.serial 4
+XResizeRequestEvent.type 0
+XResizeRequestEvent.width 20
+XResizeRequestEvent.window 16
+XSegment 8
+XSegment.x1 0
+XSegment.x2 4
+XSegment.y1 2
+XSegment.y2 6
+XSelectionClearEvent 28
+XSelectionClearEvent.display 12
+XSelectionClearEvent.selection 20
+XSelectionClearEvent.send_event 8
+XSelectionClearEvent.serial 4
+XSelectionClearEvent.time 24
+XSelectionClearEvent.type 0
+XSelectionClearEvent.window 16
+XSelectionEvent 36
+XSelectionEvent.display 12
+XSelectionEvent.property 28
+XSelectionEvent.requestor 16
+XSelectionEvent.selection 20
+XSelectionEvent.send_event 8
+XSelectionEvent.serial 4
+XSelectionEvent.target 24
+XSelectionEvent.time 32
+XSelectionEvent.type 0
+XSelectionRequestEvent 40
+XSelectionRequestEvent.display 12
+XSelectionRequestEvent.owner 16
+XSelectionRequestEvent.property 32
+XSelectionRequestEvent.requestor 20
+XSelectionRequestEvent.selection 24
+XSelectionRequestEvent.send_event 8
+XSelectionRequestEvent.serial 4
+XSelectionRequestEvent.target 28
+XSelectionRequestEvent.time 36
+XSelectionRequestEvent.type 0
+XSetWindowAttributes 60
+XSetWindowAttributes.background_pixel 4
+XSetWindowAttributes.background_pixmap 0
+XSetWindowAttributes.backing_pixel 32
+XSetWindowAttributes.backing_planes 28
+XSetWindowAttributes.backing_store 24
+XSetWindowAttributes.bit_gravity 16
+XSetWindowAttributes.border_pixel 12
+XSetWindowAttributes.border_pixmap 8
+XSetWindowAttributes.colormap 52
+XSetWindowAttributes.cursor 56
+XSetWindowAttributes.do_not_propagate_mask 44
+XSetWindowAttributes.event_mask 40
+XSetWindowAttributes.override_redirect 48
+XSetWindowAttributes.save_under 36
+XSetWindowAttributes.win_gravity 20
+XSizeHints 72
+XSizeHints.base_height 64
+XSizeHints.base_width 60
+XSizeHints.flags 0
+XSizeHints.height 16
+XSizeHints.height_inc 40
+XSizeHints.max_aspect.x 52
+XSizeHints.max_aspect.y 56
+XSizeHints.max_height 32
+XSizeHints.max_width 28
+XSizeHints.min_aspect.x 44
+XSizeHints.min_aspect.y 48
+XSizeHints.min_height 24
+XSizeHints.min_width 20
+XSizeHints.width 12
+XSizeHints.width_inc 36
+XSizeHints.win_gravity 68
+XSizeHints.x 4
+XSizeHints.y 8
+XStandardColormap 40
+XStandardColormap.base_pixel 28
XStandardColormap.blue_max 20
XStandardColormap.blue_mult 24
-XStandardColormap.base_pixel 28
-XStandardColormap.visualid 32
+XStandardColormap.colormap 0
+XStandardColormap.green_max 12
+XStandardColormap.green_mult 16
XStandardColormap.killid 36
-XStandardColormap 40
-XComposeStatus.compose_ptr 0
-XComposeStatus.chars_matched 4
-XComposeStatus 8
-AwtGraphicsConfigData.awt_depth 0
-AwtGraphicsConfigData.awt_cmap 4
-AwtGraphicsConfigData.awt_visInfo 8
-AwtGraphicsConfigData.awt_num_colors 48
-AwtGraphicsConfigData.awtImage 52
-AwtGraphicsConfigData.AwtColorMatch 56
-AwtGraphicsConfigData.monoImage 60
-AwtGraphicsConfigData.monoPixmap 64
-AwtGraphicsConfigData.monoPixmapWidth 68
-AwtGraphicsConfigData.monoPixmapHeight 72
-AwtGraphicsConfigData.monoPixmapGC 76
-AwtGraphicsConfigData.pixelStride 80
-AwtGraphicsConfigData.color_data 84
-AwtGraphicsConfigData.glxInfo 88
-AwtGraphicsConfigData.isTranslucencySupported 92
-AwtGraphicsConfigData.renderPictFormat 96
-AwtGraphicsConfigData 128
-XColor.pixel 0
-XColor.red 4
-XColor.green 6
-XColor.blue 8
-XColor.flags 10
-XColor.pad 11
-XColor 12
-XTextProperty.value 0
+XStandardColormap.red_max 4
+XStandardColormap.red_mult 8
+XStandardColormap.visualid 32
+XTextItem 16
+XTextItem16 16
+XTextItem16.chars 0
+XTextItem16.delta 8
+XTextItem16.font 12
+XTextItem16.nchars 4
+XTextItem.chars 0
+XTextItem.delta 8
+XTextItem.font 12
+XTextItem.nchars 4
+XTextProperty 16
XTextProperty.encoding 4
XTextProperty.format 8
XTextProperty.nitems 12
-XTextProperty 16
+XTextProperty.value 0
+XTimeCoord 8
+XTimeCoord.time 0
+XTimeCoord.x 4
+XTimeCoord.y 6
+XUnmapEvent 28
+XUnmapEvent.display 12
+XUnmapEvent.event 16
+XUnmapEvent.from_configure 24
+XUnmapEvent.send_event 8
+XUnmapEvent.serial 4
+XUnmapEvent.type 0
+XUnmapEvent.window 20
+XVisibilityEvent 24
+XVisibilityEvent.display 12
+XVisibilityEvent.send_event 8
+XVisibilityEvent.serial 4
+XVisibilityEvent.state 20
+XVisibilityEvent.type 0
+XVisibilityEvent.window 16
+XVisualInfo 40
+XVisualInfo.bits_per_rgb 36
+XVisualInfo.blue_mask 28
+XVisualInfo.class 16
+XVisualInfo.colormap_size 32
+XVisualInfo.depth 12
+XVisualInfo.green_mask 24
+XVisualInfo.red_mask 20
+XVisualInfo.screen 8
+XVisualInfo.visual 0
+XVisualInfo.visualid 4
+XwcTextItem 16
+XwcTextItem.chars 0
+XwcTextItem.delta 8
+XwcTextItem.font_set 12
+XwcTextItem.nchars 4
+XWindowAttributes 92
+XWindowAttributes.all_event_masks 72
+XWindowAttributes.backing_pixel 52
+XWindowAttributes.backing_planes 48
+XWindowAttributes.backing_store 44
+XWindowAttributes.bit_gravity 36
+XWindowAttributes.border_width 16
+XWindowAttributes.class 32
+XWindowAttributes.colormap 60
+XWindowAttributes.depth 20
+XWindowAttributes.do_not_propagate_mask 80
+XWindowAttributes.height 12
+XWindowAttributes.map_installed 64
+XWindowAttributes.map_state 68
+XWindowAttributes.override_redirect 84
+XWindowAttributes.root 28
+XWindowAttributes.save_under 56
+XWindowAttributes.screen 88
+XWindowAttributes.visual 24
+XWindowAttributes.width 8
+XWindowAttributes.win_gravity 40
+XWindowAttributes.x 0
+XWindowAttributes.y 4
+XWindowAttributes.your_event_mask 76
+XWindowChanges 28
+XWindowChanges.border_width 16
+XWindowChanges.height 12
+XWindowChanges.sibling 20
+XWindowChanges.stack_mode 24
+XWindowChanges.width 8
+XWindowChanges.x 0
+XWindowChanges.y 4
+XWMHints 36
+XWMHints.flags 0
+XWMHints.icon_mask 28
+XWMHints.icon_pixmap 12
+XWMHints.icon_window 16
+XWMHints.icon_x 20
+XWMHints.icon_y 24
+XWMHints.initial_state 8
+XWMHints.input 4
+XWMHints.window_group 32
diff --git a/make/data/x11wrappergen/sizes.64 b/make/data/x11wrappergen/sizes-64.txt
similarity index 100%
rename from make/data/x11wrappergen/sizes.64
rename to make/data/x11wrappergen/sizes-64.txt
index 9f0e60fa4e7..29cea81c899 100644
--- a/make/data/x11wrappergen/sizes.64
+++ b/make/data/x11wrappergen/sizes-64.txt
@@ -1,1017 +1,1017 @@
-long 8
-int 4
-short 2
-ptr 8
-Bool 4
Atom 8
-Window 8
-XExtData.number 0
-XExtData.next 8
-XExtData.free_private 16
-XExtData.private_data 24
-XExtData 32
-XIMStringConversionCallbackStruct.position 0
-XIMStringConversionCallbackStruct.direction 4
-XIMStringConversionCallbackStruct.operation 8
-XIMStringConversionCallbackStruct.factor 10
-XIMStringConversionCallbackStruct.text 16
-XIMStringConversionCallbackStruct 24
-XkbNewKeyboardNotifyEvent.type 0
-XkbNewKeyboardNotifyEvent.serial 8
-XkbNewKeyboardNotifyEvent.send_event 16
-XkbNewKeyboardNotifyEvent.display 24
-XkbNewKeyboardNotifyEvent.time 32
-XkbNewKeyboardNotifyEvent.xkb_type 40
-XkbNewKeyboardNotifyEvent.device 44
-XkbNewKeyboardNotifyEvent.old_device 48
-XkbNewKeyboardNotifyEvent.min_key_code 52
-XkbNewKeyboardNotifyEvent.max_key_code 56
-XkbNewKeyboardNotifyEvent.old_min_key_code 60
-XkbNewKeyboardNotifyEvent.old_max_key_code 64
-XkbNewKeyboardNotifyEvent.changed 68
-XkbNewKeyboardNotifyEvent.req_major 72
-XkbNewKeyboardNotifyEvent.req_minor 73
-XkbNewKeyboardNotifyEvent 80
-XTimeCoord.time 0
-XTimeCoord.x 8
-XTimeCoord.y 10
-XTimeCoord 16
-XkbCompatMapNotifyEvent.type 0
-XkbCompatMapNotifyEvent.serial 8
-XkbCompatMapNotifyEvent.send_event 16
-XkbCompatMapNotifyEvent.display 24
-XkbCompatMapNotifyEvent.time 32
-XkbCompatMapNotifyEvent.xkb_type 40
-XkbCompatMapNotifyEvent.device 44
-XkbCompatMapNotifyEvent.changed_groups 48
-XkbCompatMapNotifyEvent.first_si 52
-XkbCompatMapNotifyEvent.num_si 56
-XkbCompatMapNotifyEvent.num_total_si 60
-XkbCompatMapNotifyEvent 64
-XIMStatusDrawCallbackStruct.type 0
-XIMStatusDrawCallbackStruct.data 8
-XIMStatusDrawCallbackStruct 16
-XKeyboardControl.key_click_percent 0
-XKeyboardControl.bell_percent 4
-XKeyboardControl.bell_pitch 8
-XKeyboardControl.bell_duration 12
-XKeyboardControl.led 16
-XKeyboardControl.led_mode 20
-XKeyboardControl.key 24
-XKeyboardControl.auto_repeat_mode 28
-XKeyboardControl 32
-XSelectionClearEvent.type 0
-XSelectionClearEvent.serial 8
-XSelectionClearEvent.send_event 16
-XSelectionClearEvent.display 24
-XSelectionClearEvent.window 32
-XSelectionClearEvent.selection 40
-XSelectionClearEvent.time 48
-XSelectionClearEvent 56
-XWindowChanges.x 0
-XWindowChanges.y 4
-XWindowChanges.width 8
-XWindowChanges.height 12
-XWindowChanges.border_width 16
-XWindowChanges.sibling 24
-XWindowChanges.stack_mode 32
-XWindowChanges 40
-XIMPreeditCaretCallbackStruct.position 0
-XIMPreeditCaretCallbackStruct.direction 4
-XIMPreeditCaretCallbackStruct.style 8
-XIMPreeditCaretCallbackStruct 12
-XOMCharSetList.charset_count 0
-XOMCharSetList.charset_list 8
-XOMCharSetList 16
-XOMFontInfo.num_font 0
-XOMFontInfo.font_struct_list 8
-XOMFontInfo.font_name_list 16
-XOMFontInfo 24
+AwtGraphicsConfigData 208
+AwtGraphicsConfigData.awt_cmap 8
+AwtGraphicsConfigData.AwtColorMatch 96
+AwtGraphicsConfigData.awt_depth 0
+AwtGraphicsConfigData.awtImage 88
+AwtGraphicsConfigData.awt_num_colors 80
+AwtGraphicsConfigData.awt_visInfo 16
+AwtGraphicsConfigData.color_data 144
+AwtGraphicsConfigData.glxInfo 152
+AwtGraphicsConfigData.isTranslucencySupported 160
+AwtGraphicsConfigData.monoImage 104
+AwtGraphicsConfigData.monoPixmap 112
+AwtGraphicsConfigData.monoPixmapGC 128
+AwtGraphicsConfigData.monoPixmapHeight 124
+AwtGraphicsConfigData.monoPixmapWidth 120
+AwtGraphicsConfigData.pixelStride 136
+AwtGraphicsConfigData.renderPictFormat 168
+awtImageData 560
+awtImageData.clrdata 16
+awtImageData.convert 48
+awtImageData.Depth 0
+awtImageData.wsImageFormat 4
+AwtScreenData 48
+AwtScreenData.blackpixel 24
+AwtScreenData.configs 40
+AwtScreenData.defaultConfig 32
AwtScreenData.numConfigs 0
AwtScreenData.root 8
AwtScreenData.whitepixel 16
-AwtScreenData.blackpixel 24
-AwtScreenData.defaultConfig 32
-AwtScreenData.configs 40
-AwtScreenData 48
-XIMHotKeyTrigger.keysym 0
-XIMHotKeyTrigger.modifier 8
-XIMHotKeyTrigger.modifier_mask 12
-XIMHotKeyTrigger 16
-XCirculateEvent.type 0
-XCirculateEvent.serial 8
-XCirculateEvent.send_event 16
-XCirculateEvent.display 24
-XCirculateEvent.event 32
-XCirculateEvent.window 40
-XCirculateEvent.place 48
-XCirculateEvent 56
-Screen.ext_data 0
-Screen.display 8
-Screen.root 16
-Screen.width 24
-Screen.height 28
-Screen.mwidth 32
-Screen.mheight 36
-Screen.ndepths 40
-Screen.depths 48
-Screen.root_depth 56
-Screen.root_visual 64
-Screen.default_gc 72
-Screen.cmap 80
-Screen.white_pixel 88
-Screen.black_pixel 96
-Screen.max_maps 104
-Screen.min_maps 108
-Screen.backing_store 112
-Screen.save_unders 116
-Screen.root_input_mask 120
-Screen 128
-XMapRequestEvent.type 0
-XMapRequestEvent.serial 8
-XMapRequestEvent.send_event 16
-XMapRequestEvent.display 24
-XMapRequestEvent.parent 32
-XMapRequestEvent.window 40
-XMapRequestEvent 48
-XIMText.length 0
-XIMText.feedback 8
-XIMText.encoding_is_wchar 16
-XIMText.string 24
-XIMText 32
-XGraphicsExposeEvent.type 0
-XGraphicsExposeEvent.serial 8
-XGraphicsExposeEvent.send_event 16
-XGraphicsExposeEvent.display 24
-XGraphicsExposeEvent.drawable 32
-XGraphicsExposeEvent.x 40
-XGraphicsExposeEvent.y 44
-XGraphicsExposeEvent.width 48
-XGraphicsExposeEvent.height 52
-XGraphicsExposeEvent.count 56
-XGraphicsExposeEvent.major_code 60
-XGraphicsExposeEvent.minor_code 64
-XGraphicsExposeEvent 72
-XEvent.type 0
-XEvent.xany 0
-XEvent.xkey 0
-XEvent.xbutton 0
-XEvent.xmotion 0
-XEvent.xcrossing 0
-XEvent.xfocus 0
-XEvent.xexpose 0
-XEvent.xgraphicsexpose 0
-XEvent.xnoexpose 0
-XEvent.xvisibility 0
-XEvent.xcreatewindow 0
-XEvent.xdestroywindow 0
-XEvent.xunmap 0
-XEvent.xmap 0
-XEvent.xmaprequest 0
-XEvent.xreparent 0
-XEvent.xconfigure 0
-XEvent.xgravity 0
-XEvent.xresizerequest 0
-XEvent.xconfigurerequest 0
-XEvent.xcirculate 0
-XEvent.xcirculaterequest 0
-XEvent.xproperty 0
-XEvent.xselectionclear 0
-XEvent.xselectionrequest 0
-XEvent.xselection 0
-XEvent.xcolormap 0
-XEvent.xclient 0
-XEvent.xmapping 0
-XEvent.xerror 0
-XEvent.xkeymap 0
-XEvent.pad 0
-XEvent 192
-XRenderDirectFormat.red 0
-XRenderDirectFormat.redMask 2
-XRenderDirectFormat.green 4
-XRenderDirectFormat.greenMask 6
-XRenderDirectFormat.blue 8
-XRenderDirectFormat.blueMask 10
-XRenderDirectFormat.alpha 12
-XRenderDirectFormat.alphaMask 14
-XRenderDirectFormat 16
+Bool 4
+ColorData 88
ColorData.awt_Colors 0
-ColorData.awt_numICMcolors 8
ColorData.awt_icmLUT 16
ColorData.awt_icmLUT2Colors 24
-ColorData.img_grays 32
+ColorData.awt_numICMcolors 8
ColorData.img_clr_tbl 40
-ColorData.img_oda_red 48
-ColorData.img_oda_green 56
+ColorData.img_grays 32
ColorData.img_oda_blue 64
+ColorData.img_oda_green 56
+ColorData.img_oda_red 48
ColorData.pGrayInverseLutData 72
-ColorData.screendata 80
ColorData.representsPrimaries 84
-ColorData 88
-XFontStruct.ext_data 0
-XFontStruct.fid 8
-XFontStruct.direction 16
-XFontStruct.min_char_or_byte2 20
-XFontStruct.max_char_or_byte2 24
-XFontStruct.min_byte1 28
-XFontStruct.max_byte1 32
-XFontStruct.all_chars_exist 36
-XFontStruct.n_properties 44
-XFontStruct.properties 48
-XFontStruct.min_bounds 56
-XFontStruct.max_bounds 68
-XFontStruct.per_char 80
-XFontStruct.ascent 88
-XFontStruct.descent 92
-XFontStruct 96
-XExtCodes.extension 0
-XExtCodes.major_opcode 4
-XExtCodes.first_event 8
-XExtCodes.first_error 12
-XExtCodes 16
-XFontSetExtents.max_ink_extent 0
-XFontSetExtents.max_logical_extent 8
-XFontSetExtents 16
-XSelectionEvent.type 0
-XSelectionEvent.serial 8
-XSelectionEvent.send_event 16
-XSelectionEvent.display 24
-XSelectionEvent.requestor 32
-XSelectionEvent.selection 40
-XSelectionEvent.target 48
-XSelectionEvent.property 56
-XSelectionEvent.time 64
-XSelectionEvent 72
-XArc.x 0
-XArc.y 2
-XArc.width 4
-XArc.height 6
+ColorData.screendata 80
+ColorEntry 4
+ColorEntry.b 2
+ColorEntry.flags 3
+ColorEntry.g 1
+ColorEntry.r 0
+Depth 16
+Depth.depth 0
+Depth.nvisuals 4
+Depth.visuals 8
+int 4
+long 8
+PropMwmHints 40
+PropMwmHints.decorations 16
+PropMwmHints.flags 0
+PropMwmHints.functions 8
+PropMwmHints.inputMode 24
+PropMwmHints.status 32
+ptr 8
+Screen 128
+Screen.backing_store 112
+Screen.black_pixel 96
+Screen.cmap 80
+Screen.default_gc 72
+Screen.depths 48
+Screen.display 8
+Screen.ext_data 0
+ScreenFormat 24
+ScreenFormat.bits_per_pixel 12
+ScreenFormat.depth 8
+ScreenFormat.ext_data 0
+ScreenFormat.scanline_pad 16
+Screen.height 28
+Screen.max_maps 104
+Screen.mheight 36
+Screen.min_maps 108
+Screen.mwidth 32
+Screen.ndepths 40
+Screen.root 16
+Screen.root_depth 56
+Screen.root_input_mask 120
+Screen.root_visual 64
+Screen.save_unders 116
+Screen.white_pixel 88
+Screen.width 24
+short 2
+Visual 56
+Visual.bits_per_rgb 48
+Visual.blue_mask 40
+Visual.class 16
+Visual.ext_data 0
+Visual.green_mask 32
+Visual.map_entries 52
+Visual.red_mask 24
+Visual.visualid 8
+Window 8
+XAnyEvent 40
+XAnyEvent.display 24
+XAnyEvent.send_event 16
+XAnyEvent.serial 8
+XAnyEvent.type 0
+XAnyEvent.window 32
+XArc 12
XArc.angle1 8
XArc.angle2 10
-XArc 12
-XErrorEvent.type 0
-XErrorEvent.display 8
-XErrorEvent.resourceid 16
-XErrorEvent.serial 24
-XErrorEvent.error_code 32
-XErrorEvent.request_code 33
-XErrorEvent.minor_code 34
-XErrorEvent 40
-XConfigureRequestEvent.type 0
-XConfigureRequestEvent.serial 8
-XConfigureRequestEvent.send_event 16
+XArc.height 6
+XArc.width 4
+XArc.x 0
+XArc.y 2
+XButtonEvent 96
+XButtonEvent.button 84
+XButtonEvent.display 24
+XButtonEvent.root 40
+XButtonEvent.same_screen 88
+XButtonEvent.send_event 16
+XButtonEvent.serial 8
+XButtonEvent.state 80
+XButtonEvent.subwindow 48
+XButtonEvent.time 56
+XButtonEvent.type 0
+XButtonEvent.window 32
+XButtonEvent.x 64
+XButtonEvent.x_root 72
+XButtonEvent.y 68
+XButtonEvent.y_root 76
+XChar2b 2
+XChar2b.byte1 0
+XChar2b.byte2 1
+XCharStruct 12
+XCharStruct.ascent 6
+XCharStruct.attributes 10
+XCharStruct.descent 8
+XCharStruct.lbearing 0
+XCharStruct.rbearing 2
+XCharStruct.width 4
+XCirculateEvent 56
+XCirculateEvent.display 24
+XCirculateEvent.event 32
+XCirculateEvent.place 48
+XCirculateEvent.send_event 16
+XCirculateEvent.serial 8
+XCirculateEvent.type 0
+XCirculateEvent.window 40
+XCirculateRequestEvent 56
+XCirculateRequestEvent.display 24
+XCirculateRequestEvent.parent 32
+XCirculateRequestEvent.place 48
+XCirculateRequestEvent.send_event 16
+XCirculateRequestEvent.serial 8
+XCirculateRequestEvent.type 0
+XCirculateRequestEvent.window 40
+XClassHint 16
+XClassHint.res_class 8
+XClassHint.res_name 0
+XClientMessageEvent 96
+XClientMessageEvent.data 56
+XClientMessageEvent.display 24
+XClientMessageEvent.format 48
+XClientMessageEvent.message_type 40
+XClientMessageEvent.send_event 16
+XClientMessageEvent.serial 8
+XClientMessageEvent.type 0
+XClientMessageEvent.window 32
+XColor 16
+XColor.blue 12
+XColor.flags 14
+XColor.green 10
+XColormapEvent 56
+XColormapEvent.colormap 40
+XColormapEvent.display 24
+XColormapEvent.new 48
+XColormapEvent.send_event 16
+XColormapEvent.serial 8
+XColormapEvent.state 52
+XColormapEvent.type 0
+XColormapEvent.window 32
+XColor.pad 15
+XColor.pixel 0
+XColor.red 8
+XComposeStatus 16
+XComposeStatus.chars_matched 8
+XComposeStatus.compose_ptr 0
+XConfigureEvent 88
+XConfigureEvent.above 72
+XConfigureEvent.border_width 64
+XConfigureEvent.display 24
+XConfigureEvent.event 32
+XConfigureEvent.height 60
+XConfigureEvent.override_redirect 80
+XConfigureEvent.send_event 16
+XConfigureEvent.serial 8
+XConfigureEvent.type 0
+XConfigureEvent.width 56
+XConfigureEvent.window 40
+XConfigureEvent.x 48
+XConfigureEvent.y 52
+XConfigureRequestEvent 96
+XConfigureRequestEvent.above 72
+XConfigureRequestEvent.border_width 64
+XConfigureRequestEvent.detail 80
XConfigureRequestEvent.display 24
+XConfigureRequestEvent.height 60
XConfigureRequestEvent.parent 32
+XConfigureRequestEvent.send_event 16
+XConfigureRequestEvent.serial 8
+XConfigureRequestEvent.type 0
+XConfigureRequestEvent.value_mask 88
+XConfigureRequestEvent.width 56
XConfigureRequestEvent.window 40
XConfigureRequestEvent.x 48
XConfigureRequestEvent.y 52
-XConfigureRequestEvent.width 56
-XConfigureRequestEvent.height 60
-XConfigureRequestEvent.border_width 64
-XConfigureRequestEvent.above 72
-XConfigureRequestEvent.detail 80
-XConfigureRequestEvent.value_mask 88
-XConfigureRequestEvent 96
-ScreenFormat.ext_data 0
-ScreenFormat.depth 8
-ScreenFormat.bits_per_pixel 12
-ScreenFormat.scanline_pad 16
-ScreenFormat 24
-XButtonEvent.type 0
-XButtonEvent.serial 8
-XButtonEvent.send_event 16
-XButtonEvent.display 24
-XButtonEvent.window 32
-XButtonEvent.root 40
-XButtonEvent.subwindow 48
-XButtonEvent.time 56
-XButtonEvent.x 64
-XButtonEvent.y 68
-XButtonEvent.x_root 72
-XButtonEvent.y_root 76
-XButtonEvent.state 80
-XButtonEvent.button 84
-XButtonEvent.same_screen 88
-XButtonEvent 96
-XFontProp.name 0
-XFontProp.card32 8
+XCreateWindowEvent 72
+XCreateWindowEvent.border_width 64
+XCreateWindowEvent.display 24
+XCreateWindowEvent.height 60
+XCreateWindowEvent.override_redirect 68
+XCreateWindowEvent.parent 32
+XCreateWindowEvent.send_event 16
+XCreateWindowEvent.serial 8
+XCreateWindowEvent.type 0
+XCreateWindowEvent.width 56
+XCreateWindowEvent.window 40
+XCreateWindowEvent.x 48
+XCreateWindowEvent.y 52
+XCrossingEvent 104
+XCrossingEvent.detail 84
+XCrossingEvent.display 24
+XCrossingEvent.focus 92
+XCrossingEvent.mode 80
+XCrossingEvent.root 40
+XCrossingEvent.same_screen 88
+XCrossingEvent.send_event 16
+XCrossingEvent.serial 8
+XCrossingEvent.state 96
+XCrossingEvent.subwindow 48
+XCrossingEvent.time 56
+XCrossingEvent.type 0
+XCrossingEvent.window 32
+XCrossingEvent.x 64
+XCrossingEvent.x_root 72
+XCrossingEvent.y 68
+XCrossingEvent.y_root 76
+XdbeSwapInfo 16
+XdbeSwapInfo.swap_action 8
+XdbeSwapInfo.swap_window 0
+XDestroyWindowEvent 48
+XDestroyWindowEvent.display 24
+XDestroyWindowEvent.event 32
+XDestroyWindowEvent.send_event 16
+XDestroyWindowEvent.serial 8
+XDestroyWindowEvent.type 0
+XDestroyWindowEvent.window 40
+XErrorEvent 40
+XErrorEvent.display 8
+XErrorEvent.error_code 32
+XErrorEvent.minor_code 34
+XErrorEvent.request_code 33
+XErrorEvent.resourceid 16
+XErrorEvent.serial 24
+XErrorEvent.type 0
+XEvent 192
+XEvent.pad 0
+XEvent.type 0
+XEvent.xany 0
+XEvent.xbutton 0
+XEvent.xcirculate 0
+XEvent.xcirculaterequest 0
+XEvent.xclient 0
+XEvent.xcolormap 0
+XEvent.xconfigure 0
+XEvent.xconfigurerequest 0
+XEvent.xcreatewindow 0
+XEvent.xcrossing 0
+XEvent.xdestroywindow 0
+XEvent.xerror 0
+XEvent.xexpose 0
+XEvent.xfocus 0
+XEvent.xgraphicsexpose 0
+XEvent.xgravity 0
+XEvent.xkey 0
+XEvent.xkeymap 0
+XEvent.xmap 0
+XEvent.xmapping 0
+XEvent.xmaprequest 0
+XEvent.xmotion 0
+XEvent.xnoexpose 0
+XEvent.xproperty 0
+XEvent.xreparent 0
+XEvent.xresizerequest 0
+XEvent.xselection 0
+XEvent.xselectionclear 0
+XEvent.xselectionrequest 0
+XEvent.xunmap 0
+XEvent.xvisibility 0
+XExposeEvent 64
+XExposeEvent.count 56
+XExposeEvent.display 24
+XExposeEvent.height 52
+XExposeEvent.send_event 16
+XExposeEvent.serial 8
+XExposeEvent.type 0
+XExposeEvent.width 48
+XExposeEvent.window 32
+XExposeEvent.x 40
+XExposeEvent.y 44
+XExtCodes 16
+XExtCodes.extension 0
+XExtCodes.first_error 12
+XExtCodes.first_event 8
+XExtCodes.major_opcode 4
+XExtData 32
+XExtData.free_private 16
+XExtData.next 8
+XExtData.number 0
+XExtData.private_data 24
+XFocusChangeEvent 48
+XFocusChangeEvent.detail 44
+XFocusChangeEvent.display 24
+XFocusChangeEvent.mode 40
+XFocusChangeEvent.send_event 16
+XFocusChangeEvent.serial 8
+XFocusChangeEvent.type 0
+XFocusChangeEvent.window 32
XFontProp 16
-XIMValuesList.count_values 0
-XIMValuesList.supported_values 8
-XIMValuesList 16
-XKeymapEvent.type 0
-XKeymapEvent.serial 8
-XKeymapEvent.send_event 16
-XKeymapEvent.display 24
-XKeymapEvent.window 32
-XKeymapEvent.key_vector 40
-XKeymapEvent 72
-XTextItem16.chars 0
-XTextItem16.nchars 8
-XTextItem16.delta 12
-XTextItem16.font 16
-XTextItem16 24
+XFontProp.card32 8
+XFontProp.name 0
+XFontSetExtents 16
+XFontSetExtents.max_ink_extent 0
+XFontSetExtents.max_logical_extent 8
+XFontStruct 96
+XFontStruct.all_chars_exist 36
+XFontStruct.ascent 88
+XFontStruct.descent 92
+XFontStruct.direction 16
+XFontStruct.ext_data 0
+XFontStruct.fid 8
+XFontStruct.max_bounds 68
+XFontStruct.max_byte1 32
+XFontStruct.max_char_or_byte2 24
+XFontStruct.min_bounds 56
+XFontStruct.min_byte1 28
+XFontStruct.min_char_or_byte2 20
+XFontStruct.n_properties 44
+XFontStruct.per_char 80
+XFontStruct.properties 48
+XGCValues 128
+XGCValues.arc_mode 56
+XGCValues.background 24
+XGCValues.cap_style 40
+XGCValues.clip_mask 112
+XGCValues.clip_x_origin 104
+XGCValues.clip_y_origin 108
+XGCValues.dashes 124
+XGCValues.dash_offset 120
+XGCValues.fill_rule 52
+XGCValues.fill_style 48
+XGCValues.font 88
+XGCValues.foreground 16
+XGCValues.function 0
+XGCValues.graphics_exposures 100
+XGCValues.join_style 44
+XGCValues.line_style 36
+XGCValues.line_width 32
+XGCValues.plane_mask 8
+XGCValues.stipple 72
+XGCValues.subwindow_mode 96
+XGCValues.tile 64
+XGCValues.ts_x_origin 80
+XGCValues.ts_y_origin 84
+XGraphicsExposeEvent 72
+XGraphicsExposeEvent.count 56
+XGraphicsExposeEvent.display 24
+XGraphicsExposeEvent.drawable 32
+XGraphicsExposeEvent.height 52
+XGraphicsExposeEvent.major_code 60
+XGraphicsExposeEvent.minor_code 64
+XGraphicsExposeEvent.send_event 16
+XGraphicsExposeEvent.serial 8
+XGraphicsExposeEvent.type 0
+XGraphicsExposeEvent.width 48
+XGraphicsExposeEvent.x 40
+XGraphicsExposeEvent.y 44
+XGravityEvent 56
+XGravityEvent.display 24
+XGravityEvent.event 32
+XGravityEvent.send_event 16
+XGravityEvent.serial 8
+XGravityEvent.type 0
+XGravityEvent.window 40
+XGravityEvent.x 48
+XGravityEvent.y 52
+XHostAddress 16
+XHostAddress.address 8
+XHostAddress.family 0
+XHostAddress.length 4
+XIconSize 24
+XIconSize.height_inc 20
+XIconSize.max_height 12
+XIconSize.max_width 8
+XIconSize.min_height 4
+XIconSize.min_width 0
+XIconSize.width_inc 16
+XImage 136
+XImage.bitmap_bit_order 32
+XImage.bitmap_pad 36
+XImage.bitmap_unit 28
+XImage.bits_per_pixel 48
+XImage.blue_mask 72
+XImage.byte_order 24
+XImage.bytes_per_line 44
+XImage.data 16
+XImage.depth 40
+XImage.f.add_pixel 128
+XImage.f.create_image 88
+XImage.f.destroy_image 96
+XImage.f.get_pixel 104
+XImage.format 12
+XImage.f.put_pixel 112
+XImage.f.sub_image 120
+XImage.green_mask 64
+XImage.height 4
+XImage.obdata 80
+XImage.red_mask 56
+XImage.width 0
+XImage.xoffset 8
+XIMCallback 16
+XIMCallback.callback 8
+XIMCallback.client_data 0
+XIMHotKeyTrigger 16
+XIMHotKeyTrigger.keysym 0
+XIMHotKeyTrigger.modifier 8
+XIMHotKeyTrigger.modifier_mask 12
+XIMHotKeyTriggers 16
+XIMHotKeyTriggers.key 8
+XIMHotKeyTriggers.num_hot_key 0
+XIMPreeditCaretCallbackStruct 12
+XIMPreeditCaretCallbackStruct.direction 4
+XIMPreeditCaretCallbackStruct.position 0
+XIMPreeditCaretCallbackStruct.style 8
+XIMPreeditDrawCallbackStruct 24
XIMPreeditDrawCallbackStruct.caret 0
XIMPreeditDrawCallbackStruct.chg_first 4
XIMPreeditDrawCallbackStruct.chg_length 8
XIMPreeditDrawCallbackStruct.text 16
-XIMPreeditDrawCallbackStruct 24
-XVisualInfo.visual 0
-XVisualInfo.visualid 8
-XVisualInfo.screen 16
-XVisualInfo.depth 20
-XVisualInfo.class 24
-XVisualInfo.red_mask 32
-XVisualInfo.green_mask 40
-XVisualInfo.blue_mask 48
-XVisualInfo.colormap_size 56
-XVisualInfo.bits_per_rgb 60
-XVisualInfo 64
-XkbControlsNotifyEvent.type 0
-XkbControlsNotifyEvent.serial 8
-XkbControlsNotifyEvent.send_event 16
-XkbControlsNotifyEvent.display 24
-XkbControlsNotifyEvent.time 32
-XkbControlsNotifyEvent.xkb_type 40
-XkbControlsNotifyEvent.device 44
-XkbControlsNotifyEvent.changed_ctrls 48
-XkbControlsNotifyEvent.enabled_ctrls 52
-XkbControlsNotifyEvent.enabled_ctrl_changes 56
-XkbControlsNotifyEvent.num_groups 60
-XkbControlsNotifyEvent.keycode 64
-XkbControlsNotifyEvent.event_type 65
-XkbControlsNotifyEvent.req_major 66
-XkbControlsNotifyEvent.req_minor 67
-XkbControlsNotifyEvent 72
-PropMwmHints.flags 0
-PropMwmHints.functions 8
-PropMwmHints.decorations 16
-PropMwmHints.inputMode 24
-PropMwmHints.status 32
-PropMwmHints 40
-XClientMessageEvent.type 0
-XClientMessageEvent.serial 8
-XClientMessageEvent.send_event 16
-XClientMessageEvent.display 24
-XClientMessageEvent.window 32
-XClientMessageEvent.message_type 40
-XClientMessageEvent.format 48
-XClientMessageEvent.data 56
-XClientMessageEvent 96
-XAnyEvent.type 0
-XAnyEvent.serial 8
-XAnyEvent.send_event 16
-XAnyEvent.display 24
-XAnyEvent.window 32
-XAnyEvent 40
-XkbIndicatorNotifyEvent.type 0
-XkbIndicatorNotifyEvent.serial 8
-XkbIndicatorNotifyEvent.send_event 16
-XkbIndicatorNotifyEvent.display 24
-XkbIndicatorNotifyEvent.time 32
-XkbIndicatorNotifyEvent.xkb_type 40
-XkbIndicatorNotifyEvent.device 44
-XkbIndicatorNotifyEvent.changed 48
-XkbIndicatorNotifyEvent.state 52
-XkbIndicatorNotifyEvent 56
-XIMPreeditStateNotifyCallbackStruct.state 0
XIMPreeditStateNotifyCallbackStruct 8
-XkbAnyEvent.type 0
-XkbAnyEvent.serial 8
-XkbAnyEvent.send_event 16
-XkbAnyEvent.display 24
-XkbAnyEvent.time 32
-XkbAnyEvent.xkb_type 40
-XkbAnyEvent.device 44
-XkbAnyEvent 48
-XMotionEvent.type 0
-XMotionEvent.serial 8
-XMotionEvent.send_event 16
-XMotionEvent.display 24
-XMotionEvent.window 32
-XMotionEvent.root 40
-XMotionEvent.subwindow 48
-XMotionEvent.time 56
-XMotionEvent.x 64
-XMotionEvent.y 68
-XMotionEvent.x_root 72
-XMotionEvent.y_root 76
-XMotionEvent.state 80
-XMotionEvent.is_hint 84
-XMotionEvent.same_screen 88
-XMotionEvent 96
-XIMHotKeyTriggers.num_hot_key 0
-XIMHotKeyTriggers.key 8
-XIMHotKeyTriggers 16
+XIMPreeditStateNotifyCallbackStruct.state 0
+XIMStatusDrawCallbackStruct 16
+XIMStatusDrawCallbackStruct.data 8
+XIMStatusDrawCallbackStruct.type 0
+XIMStringConversionCallbackStruct 24
+XIMStringConversionCallbackStruct.direction 4
+XIMStringConversionCallbackStruct.factor 10
+XIMStringConversionCallbackStruct.operation 8
+XIMStringConversionCallbackStruct.position 0
+XIMStringConversionCallbackStruct.text 16
+XIMStringConversionText 32
+XIMStringConversionText.encoding_is_wchar 16
+XIMStringConversionText.feedback 8
+XIMStringConversionText.length 0
+XIMStringConversionText.string 24
+XIMStyles 16
XIMStyles.count_styles 0
XIMStyles.supported_styles 8
-XIMStyles 16
-XkbExtensionDeviceNotifyEvent.type 0
-XkbExtensionDeviceNotifyEvent.serial 8
-XkbExtensionDeviceNotifyEvent.send_event 16
-XkbExtensionDeviceNotifyEvent.display 24
-XkbExtensionDeviceNotifyEvent.time 32
-XkbExtensionDeviceNotifyEvent.xkb_type 40
+XIMText 32
+XIMText.encoding_is_wchar 16
+XIMText.feedback 8
+XIMText.length 0
+XIMText.string 24
+XIMValuesList 16
+XIMValuesList.count_values 0
+XIMValuesList.supported_values 8
+XkbAccessXNotifyEvent 64
+XkbAccessXNotifyEvent.debounce_delay 60
+XkbAccessXNotifyEvent.detail 48
+XkbAccessXNotifyEvent.device 44
+XkbAccessXNotifyEvent.display 24
+XkbAccessXNotifyEvent.keycode 52
+XkbAccessXNotifyEvent.send_event 16
+XkbAccessXNotifyEvent.serial 8
+XkbAccessXNotifyEvent.sk_delay 56
+XkbAccessXNotifyEvent.time 32
+XkbAccessXNotifyEvent.type 0
+XkbAccessXNotifyEvent.xkb_type 40
+XkbActionMessageEvent 80
+XkbActionMessageEvent.device 44
+XkbActionMessageEvent.display 24
+XkbActionMessageEvent.group 60
+XkbActionMessageEvent.keycode 48
+XkbActionMessageEvent.key_event_follows 56
+XkbActionMessageEvent.message 68
+XkbActionMessageEvent.mods 64
+XkbActionMessageEvent.press 52
+XkbActionMessageEvent.send_event 16
+XkbActionMessageEvent.serial 8
+XkbActionMessageEvent.time 32
+XkbActionMessageEvent.type 0
+XkbActionMessageEvent.xkb_type 40
+XkbAnyEvent 48
+XkbAnyEvent.device 44
+XkbAnyEvent.display 24
+XkbAnyEvent.send_event 16
+XkbAnyEvent.serial 8
+XkbAnyEvent.time 32
+XkbAnyEvent.type 0
+XkbAnyEvent.xkb_type 40
+XkbBellNotifyEvent 96
+XkbBellNotifyEvent.bell_class 60
+XkbBellNotifyEvent.bell_id 64
+XkbBellNotifyEvent.device 44
+XkbBellNotifyEvent.display 24
+XkbBellNotifyEvent.duration 56
+XkbBellNotifyEvent.event_only 88
+XkbBellNotifyEvent.name 72
+XkbBellNotifyEvent.percent 48
+XkbBellNotifyEvent.pitch 52
+XkbBellNotifyEvent.send_event 16
+XkbBellNotifyEvent.serial 8
+XkbBellNotifyEvent.time 32
+XkbBellNotifyEvent.type 0
+XkbBellNotifyEvent.window 80
+XkbBellNotifyEvent.xkb_type 40
+XkbCompatMapNotifyEvent 64
+XkbCompatMapNotifyEvent.changed_groups 48
+XkbCompatMapNotifyEvent.device 44
+XkbCompatMapNotifyEvent.display 24
+XkbCompatMapNotifyEvent.first_si 52
+XkbCompatMapNotifyEvent.num_si 56
+XkbCompatMapNotifyEvent.num_total_si 60
+XkbCompatMapNotifyEvent.send_event 16
+XkbCompatMapNotifyEvent.serial 8
+XkbCompatMapNotifyEvent.time 32
+XkbCompatMapNotifyEvent.type 0
+XkbCompatMapNotifyEvent.xkb_type 40
+XkbControlsNotifyEvent 72
+XkbControlsNotifyEvent.changed_ctrls 48
+XkbControlsNotifyEvent.device 44
+XkbControlsNotifyEvent.display 24
+XkbControlsNotifyEvent.enabled_ctrl_changes 56
+XkbControlsNotifyEvent.enabled_ctrls 52
+XkbControlsNotifyEvent.event_type 65
+XkbControlsNotifyEvent.keycode 64
+XkbControlsNotifyEvent.num_groups 60
+XkbControlsNotifyEvent.req_major 66
+XkbControlsNotifyEvent.req_minor 67
+XkbControlsNotifyEvent.send_event 16
+XkbControlsNotifyEvent.serial 8
+XkbControlsNotifyEvent.time 32
+XkbControlsNotifyEvent.type 0
+XkbControlsNotifyEvent.xkb_type 40
+XkbEvent 192
+XkbEvent.accessx 0
+XkbEvent.any 0
+XkbEvent.bell 0
+XkbEvent.compat 0
+XkbEvent.core 0
+XkbEvent.ctrls 0
+XkbEvent.device 0
+XkbEvent.indicators 0
+XkbEvent.map 0
+XkbEvent.message 0
+XkbEvent.names 0
+XkbEvent.new_kbd 0
+XkbEvent.state 0
+XkbEvent.type 0
+XkbExtensionDeviceNotifyEvent 88
XkbExtensionDeviceNotifyEvent.device 44
-XkbExtensionDeviceNotifyEvent.reason 48
-XkbExtensionDeviceNotifyEvent.supported 52
-XkbExtensionDeviceNotifyEvent.unsupported 56
+XkbExtensionDeviceNotifyEvent.display 24
XkbExtensionDeviceNotifyEvent.first_btn 60
-XkbExtensionDeviceNotifyEvent.num_btns 64
-XkbExtensionDeviceNotifyEvent.leds_defined 68
-XkbExtensionDeviceNotifyEvent.led_state 72
XkbExtensionDeviceNotifyEvent.led_class 76
XkbExtensionDeviceNotifyEvent.led_id 80
-XkbExtensionDeviceNotifyEvent 88
-XwcTextItem.chars 0
-XwcTextItem.nchars 8
-XwcTextItem.delta 12
-XwcTextItem.font_set 16
-XwcTextItem 24
-XClassHint.res_name 0
-XClassHint.res_class 8
-XClassHint 16
-XChar2b.byte1 0
-XChar2b.byte2 1
-XChar2b 2
-XSetWindowAttributes.background_pixmap 0
-XSetWindowAttributes.background_pixel 8
-XSetWindowAttributes.border_pixmap 16
-XSetWindowAttributes.border_pixel 24
-XSetWindowAttributes.bit_gravity 32
-XSetWindowAttributes.win_gravity 36
-XSetWindowAttributes.backing_store 40
-XSetWindowAttributes.backing_planes 48
-XSetWindowAttributes.backing_pixel 56
-XSetWindowAttributes.save_under 64
-XSetWindowAttributes.event_mask 72
-XSetWindowAttributes.do_not_propagate_mask 80
-XSetWindowAttributes.override_redirect 88
-XSetWindowAttributes.colormap 96
-XSetWindowAttributes.cursor 104
-XSetWindowAttributes 112
-XRenderPictFormat.id 0
-XRenderPictFormat.type 8
-XRenderPictFormat.depth 12
-XRenderPictFormat.direct 16
-XRenderPictFormat.colormap 32
-XRenderPictFormat 40
-XReparentEvent.type 0
-XReparentEvent.serial 8
-XReparentEvent.send_event 16
-XReparentEvent.display 24
-XReparentEvent.event 32
-XReparentEvent.window 40
-XReparentEvent.parent 48
-XReparentEvent.x 56
-XReparentEvent.y 60
-XReparentEvent.override_redirect 64
-XReparentEvent 72
-XCirculateRequestEvent.type 0
-XCirculateRequestEvent.serial 8
-XCirculateRequestEvent.send_event 16
-XCirculateRequestEvent.display 24
-XCirculateRequestEvent.parent 32
-XCirculateRequestEvent.window 40
-XCirculateRequestEvent.place 48
-XCirculateRequestEvent 56
-XImage.width 0
-XImage.height 4
-XImage.xoffset 8
-XImage.format 12
-XImage.data 16
-XImage.byte_order 24
-XImage.bitmap_unit 28
-XImage.bitmap_bit_order 32
-XImage.bitmap_pad 36
-XImage.depth 40
-XImage.bytes_per_line 44
-XImage.bits_per_pixel 48
-XImage.red_mask 56
-XImage.green_mask 64
-XImage.blue_mask 72
-XImage.obdata 80
-XImage.f.create_image 88
-XImage.f.destroy_image 96
-XImage.f.get_pixel 104
-XImage.f.put_pixel 112
-XImage.f.sub_image 120
-XImage.f.add_pixel 128
-XImage 136
-XKeyEvent.type 0
-XKeyEvent.serial 8
-XKeyEvent.send_event 16
-XKeyEvent.display 24
-XKeyEvent.window 32
-XKeyEvent.root 40
-XKeyEvent.subwindow 48
-XKeyEvent.time 56
-XKeyEvent.x 64
-XKeyEvent.y 68
-XKeyEvent.x_root 72
-XKeyEvent.y_root 76
-XKeyEvent.state 80
-XKeyEvent.keycode 84
-XKeyEvent.same_screen 88
-XKeyEvent 96
-XkbActionMessageEvent.type 0
-XkbActionMessageEvent.serial 8
-XkbActionMessageEvent.send_event 16
-XkbActionMessageEvent.display 24
-XkbActionMessageEvent.time 32
-XkbActionMessageEvent.xkb_type 40
-XkbActionMessageEvent.device 44
-XkbActionMessageEvent.keycode 48
-XkbActionMessageEvent.press 52
-XkbActionMessageEvent.key_event_follows 56
-XkbActionMessageEvent.group 60
-XkbActionMessageEvent.mods 64
-XkbActionMessageEvent.message 68
-XkbActionMessageEvent 80
-XdbeSwapInfo.swap_window 0
-XdbeSwapInfo.swap_action 8
-XdbeSwapInfo 16
-XTextItem.chars 0
-XTextItem.nchars 8
-XTextItem.delta 12
-XTextItem.font 16
-XTextItem 24
-XModifierKeymap.max_keypermod 0
-XModifierKeymap.modifiermap 8
-XModifierKeymap 16
-XCharStruct.lbearing 0
-XCharStruct.rbearing 2
-XCharStruct.width 4
-XCharStruct.ascent 6
-XCharStruct.descent 8
-XCharStruct.attributes 10
-XCharStruct 12
-XGravityEvent.type 0
-XGravityEvent.serial 8
-XGravityEvent.send_event 16
-XGravityEvent.display 24
-XGravityEvent.event 32
-XGravityEvent.window 40
-XGravityEvent.x 48
-XGravityEvent.y 52
-XGravityEvent 56
-Visual.ext_data 0
-Visual.visualid 8
-Visual.class 16
-Visual.red_mask 24
-Visual.green_mask 32
-Visual.blue_mask 40
-Visual.bits_per_rgb 48
-Visual.map_entries 52
-Visual 56
-XOMOrientation.num_orientation 0
-XOMOrientation.orientation 8
-XOMOrientation 16
-XkbAccessXNotifyEvent.type 0
-XkbAccessXNotifyEvent.serial 8
-XkbAccessXNotifyEvent.send_event 16
-XkbAccessXNotifyEvent.display 24
-XkbAccessXNotifyEvent.time 32
-XkbAccessXNotifyEvent.xkb_type 40
-XkbAccessXNotifyEvent.device 44
-XkbAccessXNotifyEvent.detail 48
-XkbAccessXNotifyEvent.keycode 52
-XkbAccessXNotifyEvent.sk_delay 56
-XkbAccessXNotifyEvent.debounce_delay 60
-XkbAccessXNotifyEvent 64
-XWindowAttributes.x 0
-XWindowAttributes.y 4
-XWindowAttributes.width 8
-XWindowAttributes.height 12
-XWindowAttributes.border_width 16
-XWindowAttributes.depth 20
-XWindowAttributes.visual 24
-XWindowAttributes.root 32
-XWindowAttributes.class 40
-XWindowAttributes.bit_gravity 44
-XWindowAttributes.win_gravity 48
-XWindowAttributes.backing_store 52
-XWindowAttributes.backing_planes 56
-XWindowAttributes.backing_pixel 64
-XWindowAttributes.save_under 72
-XWindowAttributes.colormap 80
-XWindowAttributes.map_installed 88
-XWindowAttributes.map_state 92
-XWindowAttributes.all_event_masks 96
-XWindowAttributes.your_event_mask 104
-XWindowAttributes.do_not_propagate_mask 112
-XWindowAttributes.override_redirect 120
-XWindowAttributes.screen 128
-XWindowAttributes 136
-XmbTextItem.chars 0
-XmbTextItem.nchars 8
-XmbTextItem.delta 12
-XmbTextItem.font_set 16
-XmbTextItem 24
-XMappingEvent.type 0
-XMappingEvent.serial 8
-XMappingEvent.send_event 16
-XMappingEvent.display 24
-XMappingEvent.window 32
-XMappingEvent.request 40
-XMappingEvent.first_keycode 44
-XMappingEvent.count 48
-XMappingEvent 56
-XSizeHints.flags 0
-XSizeHints.x 8
-XSizeHints.y 12
-XSizeHints.width 16
-XSizeHints.height 20
-XSizeHints.min_width 24
-XSizeHints.min_height 28
-XSizeHints.max_width 32
-XSizeHints.max_height 36
-XSizeHints.width_inc 40
-XSizeHints.height_inc 44
-XSizeHints.min_aspect.x 48
-XSizeHints.min_aspect.y 52
-XSizeHints.max_aspect.x 56
-XSizeHints.max_aspect.y 60
-XSizeHints.base_width 64
-XSizeHints.base_height 68
-XSizeHints.win_gravity 72
-XSizeHints 80
-XUnmapEvent.type 0
-XUnmapEvent.serial 8
-XUnmapEvent.send_event 16
-XUnmapEvent.display 24
-XUnmapEvent.event 32
-XUnmapEvent.window 40
-XUnmapEvent.from_configure 48
-XUnmapEvent 56
-awtImageData.Depth 0
-awtImageData.wsImageFormat 4
-awtImageData.clrdata 16
-awtImageData.convert 48
-awtImageData 560
-XkbStateNotifyEvent.type 0
-XkbStateNotifyEvent.serial 8
-XkbStateNotifyEvent.send_event 16
-XkbStateNotifyEvent.display 24
-XkbStateNotifyEvent.time 32
-XkbStateNotifyEvent.xkb_type 40
-XkbStateNotifyEvent.device 44
-XkbStateNotifyEvent.changed 48
-XkbStateNotifyEvent.group 52
-XkbStateNotifyEvent.base_group 56
-XkbStateNotifyEvent.latched_group 60
-XkbStateNotifyEvent.locked_group 64
-XkbStateNotifyEvent.mods 68
-XkbStateNotifyEvent.base_mods 72
-XkbStateNotifyEvent.latched_mods 76
-XkbStateNotifyEvent.locked_mods 80
-XkbStateNotifyEvent.compat_state 84
-XkbStateNotifyEvent.grab_mods 88
-XkbStateNotifyEvent.compat_grab_mods 89
-XkbStateNotifyEvent.lookup_mods 90
-XkbStateNotifyEvent.compat_lookup_mods 91
-XkbStateNotifyEvent.ptr_buttons 92
-XkbStateNotifyEvent.keycode 96
-XkbStateNotifyEvent.event_type 97
-XkbStateNotifyEvent.req_major 98
-XkbStateNotifyEvent.req_minor 99
-XkbStateNotifyEvent 104
-XExposeEvent.type 0
-XExposeEvent.serial 8
-XExposeEvent.send_event 16
-XExposeEvent.display 24
-XExposeEvent.window 32
-XExposeEvent.x 40
-XExposeEvent.y 44
-XExposeEvent.width 48
-XExposeEvent.height 52
-XExposeEvent.count 56
-XExposeEvent 64
-XkbMapNotifyEvent.type 0
-XkbMapNotifyEvent.serial 8
-XkbMapNotifyEvent.send_event 16
-XkbMapNotifyEvent.display 24
-XkbMapNotifyEvent.time 32
-XkbMapNotifyEvent.xkb_type 40
-XkbMapNotifyEvent.device 44
+XkbExtensionDeviceNotifyEvent.leds_defined 68
+XkbExtensionDeviceNotifyEvent.led_state 72
+XkbExtensionDeviceNotifyEvent.num_btns 64
+XkbExtensionDeviceNotifyEvent.reason 48
+XkbExtensionDeviceNotifyEvent.send_event 16
+XkbExtensionDeviceNotifyEvent.serial 8
+XkbExtensionDeviceNotifyEvent.supported 52
+XkbExtensionDeviceNotifyEvent.time 32
+XkbExtensionDeviceNotifyEvent.type 0
+XkbExtensionDeviceNotifyEvent.unsupported 56
+XkbExtensionDeviceNotifyEvent.xkb_type 40
+XkbIndicatorNotifyEvent 56
+XkbIndicatorNotifyEvent.changed 48
+XkbIndicatorNotifyEvent.device 44
+XkbIndicatorNotifyEvent.display 24
+XkbIndicatorNotifyEvent.send_event 16
+XkbIndicatorNotifyEvent.serial 8
+XkbIndicatorNotifyEvent.state 52
+XkbIndicatorNotifyEvent.time 32
+XkbIndicatorNotifyEvent.type 0
+XkbIndicatorNotifyEvent.xkb_type 40
+XkbMapNotifyEvent 104
XkbMapNotifyEvent.changed 48
-XkbMapNotifyEvent.flags 52
-XkbMapNotifyEvent.first_type 56
-XkbMapNotifyEvent.num_types 60
-XkbMapNotifyEvent.min_key_code 64
-XkbMapNotifyEvent.max_key_code 65
-XkbMapNotifyEvent.first_key_sym 66
+XkbMapNotifyEvent.device 44
+XkbMapNotifyEvent.display 24
XkbMapNotifyEvent.first_key_act 67
XkbMapNotifyEvent.first_key_behavior 68
XkbMapNotifyEvent.first_key_explicit 69
+XkbMapNotifyEvent.first_key_sym 66
XkbMapNotifyEvent.first_modmap_key 70
+XkbMapNotifyEvent.first_type 56
XkbMapNotifyEvent.first_vmodmap_key 71
-XkbMapNotifyEvent.num_key_syms 72
+XkbMapNotifyEvent.flags 52
+XkbMapNotifyEvent.max_key_code 65
+XkbMapNotifyEvent.min_key_code 64
XkbMapNotifyEvent.num_key_acts 76
XkbMapNotifyEvent.num_key_behaviors 80
XkbMapNotifyEvent.num_key_explicit 84
+XkbMapNotifyEvent.num_key_syms 72
XkbMapNotifyEvent.num_modmap_keys 88
+XkbMapNotifyEvent.num_types 60
XkbMapNotifyEvent.num_vmodmap_keys 92
+XkbMapNotifyEvent.send_event 16
+XkbMapNotifyEvent.serial 8
+XkbMapNotifyEvent.time 32
+XkbMapNotifyEvent.type 0
XkbMapNotifyEvent.vmods 96
-XkbMapNotifyEvent 104
-XGCValues.function 0
-XGCValues.plane_mask 8
-XGCValues.foreground 16
-XGCValues.background 24
-XGCValues.line_width 32
-XGCValues.line_style 36
-XGCValues.cap_style 40
-XGCValues.join_style 44
-XGCValues.fill_style 48
-XGCValues.fill_rule 52
-XGCValues.arc_mode 56
-XGCValues.tile 64
-XGCValues.stipple 72
-XGCValues.ts_x_origin 80
-XGCValues.ts_y_origin 84
-XGCValues.font 88
-XGCValues.subwindow_mode 96
-XGCValues.graphics_exposures 100
-XGCValues.clip_x_origin 104
-XGCValues.clip_y_origin 108
-XGCValues.clip_mask 112
-XGCValues.dash_offset 120
-XGCValues.dashes 124
-XGCValues 128
-XFocusChangeEvent.type 0
-XFocusChangeEvent.serial 8
-XFocusChangeEvent.send_event 16
-XFocusChangeEvent.display 24
-XFocusChangeEvent.window 32
-XFocusChangeEvent.mode 40
-XFocusChangeEvent.detail 44
-XFocusChangeEvent 48
-XPixmapFormatValues.depth 0
-XPixmapFormatValues.bits_per_pixel 4
-XPixmapFormatValues.scanline_pad 8
-XPixmapFormatValues 12
-XMapEvent.type 0
-XMapEvent.serial 8
-XMapEvent.send_event 16
-XMapEvent.display 24
-XMapEvent.event 32
-XMapEvent.window 40
-XMapEvent.override_redirect 48
-XMapEvent 56
-XkbBellNotifyEvent.type 0
-XkbBellNotifyEvent.serial 8
-XkbBellNotifyEvent.send_event 16
-XkbBellNotifyEvent.display 24
-XkbBellNotifyEvent.time 32
-XkbBellNotifyEvent.xkb_type 40
-XkbBellNotifyEvent.device 44
-XkbBellNotifyEvent.percent 48
-XkbBellNotifyEvent.pitch 52
-XkbBellNotifyEvent.duration 56
-XkbBellNotifyEvent.bell_class 60
-XkbBellNotifyEvent.bell_id 64
-XkbBellNotifyEvent.name 72
-XkbBellNotifyEvent.window 80
-XkbBellNotifyEvent.event_only 88
-XkbBellNotifyEvent 96
-XIMStringConversionText.length 0
-XIMStringConversionText.feedback 8
-XIMStringConversionText.encoding_is_wchar 16
-XIMStringConversionText.string 24
-XIMStringConversionText 32
-XKeyboardState.key_click_percent 0
-XKeyboardState.bell_percent 4
-XKeyboardState.bell_pitch 8
-XKeyboardState.bell_duration 12
-XKeyboardState.led_mask 16
-XKeyboardState.global_auto_repeat 24
-XKeyboardState.auto_repeats 28
-XKeyboardState 64
-XkbEvent.type 0
-XkbEvent.any 0
-XkbEvent.new_kbd 0
-XkbEvent.map 0
-XkbEvent.state 0
-XkbEvent.ctrls 0
-XkbEvent.indicators 0
-XkbEvent.names 0
-XkbEvent.compat 0
-XkbEvent.bell 0
-XkbEvent.message 0
-XkbEvent.accessx 0
-XkbEvent.device 0
-XkbEvent.core 0
-XkbEvent 192
-XPoint.x 0
-XPoint.y 2
-XPoint 4
-XSegment.x1 0
-XSegment.y1 2
-XSegment.x2 4
-XSegment.y2 6
-XSegment 8
-XIconSize.min_width 0
-XIconSize.min_height 4
-XIconSize.max_width 8
-XIconSize.max_height 12
-XIconSize.width_inc 16
-XIconSize.height_inc 20
-XIconSize 24
-XIMCallback.client_data 0
-XIMCallback.callback 8
-XIMCallback 16
-XConfigureEvent.type 0
-XConfigureEvent.serial 8
-XConfigureEvent.send_event 16
-XConfigureEvent.display 24
-XConfigureEvent.event 32
-XConfigureEvent.window 40
-XConfigureEvent.x 48
-XConfigureEvent.y 52
-XConfigureEvent.width 56
-XConfigureEvent.height 60
-XConfigureEvent.border_width 64
-XConfigureEvent.above 72
-XConfigureEvent.override_redirect 80
-XConfigureEvent 88
-XRectangle.x 0
-XRectangle.y 2
-XRectangle.width 4
-XRectangle.height 6
-XRectangle 8
-XkbNamesNotifyEvent.type 0
-XkbNamesNotifyEvent.serial 8
-XkbNamesNotifyEvent.send_event 16
-XkbNamesNotifyEvent.display 24
-XkbNamesNotifyEvent.time 32
-XkbNamesNotifyEvent.xkb_type 40
-XkbNamesNotifyEvent.device 44
+XkbMapNotifyEvent.xkb_type 40
+XkbNamesNotifyEvent 96
XkbNamesNotifyEvent.changed 48
-XkbNamesNotifyEvent.first_type 52
-XkbNamesNotifyEvent.num_types 56
-XkbNamesNotifyEvent.first_lvl 60
-XkbNamesNotifyEvent.num_lvls 64
-XkbNamesNotifyEvent.num_aliases 68
-XkbNamesNotifyEvent.num_radio_groups 72
-XkbNamesNotifyEvent.changed_vmods 76
XkbNamesNotifyEvent.changed_groups 80
XkbNamesNotifyEvent.changed_indicators 84
+XkbNamesNotifyEvent.changed_vmods 76
+XkbNamesNotifyEvent.device 44
+XkbNamesNotifyEvent.display 24
XkbNamesNotifyEvent.first_key 88
+XkbNamesNotifyEvent.first_lvl 60
+XkbNamesNotifyEvent.first_type 52
+XkbNamesNotifyEvent.num_aliases 68
XkbNamesNotifyEvent.num_keys 92
-XkbNamesNotifyEvent 96
-XCreateWindowEvent.type 0
-XCreateWindowEvent.serial 8
-XCreateWindowEvent.send_event 16
-XCreateWindowEvent.display 24
-XCreateWindowEvent.parent 32
-XCreateWindowEvent.window 40
-XCreateWindowEvent.x 48
-XCreateWindowEvent.y 52
-XCreateWindowEvent.width 56
-XCreateWindowEvent.height 60
-XCreateWindowEvent.border_width 64
-XCreateWindowEvent.override_redirect 68
-XCreateWindowEvent 72
-XVisibilityEvent.type 0
-XVisibilityEvent.serial 8
-XVisibilityEvent.send_event 16
-XVisibilityEvent.display 24
-XVisibilityEvent.window 32
-XVisibilityEvent.state 40
-XVisibilityEvent 48
-XWMHints.flags 0
-XWMHints.initial_state 12
-XWMHints.icon_pixmap 16
-XWMHints.icon_window 24
-XWMHints.icon_x 32
-XWMHints.icon_y 36
-XWMHints.icon_mask 40
-XWMHints.input 8
-XWMHints.window_group 48
-XWMHints 56
-XCrossingEvent.type 0
-XCrossingEvent.serial 8
-XCrossingEvent.send_event 16
-XCrossingEvent.display 24
-XCrossingEvent.window 32
-XCrossingEvent.root 40
-XCrossingEvent.subwindow 48
-XCrossingEvent.time 56
-XCrossingEvent.x 64
-XCrossingEvent.y 68
-XCrossingEvent.x_root 72
-XCrossingEvent.y_root 76
-XCrossingEvent.mode 80
-XCrossingEvent.detail 84
-XCrossingEvent.same_screen 88
-XCrossingEvent.focus 92
-XCrossingEvent.state 96
-XCrossingEvent 104
-XSelectionRequestEvent.type 0
-XSelectionRequestEvent.serial 8
-XSelectionRequestEvent.send_event 16
-XSelectionRequestEvent.display 24
-XSelectionRequestEvent.owner 32
-XSelectionRequestEvent.requestor 40
-XSelectionRequestEvent.selection 48
-XSelectionRequestEvent.target 56
-XSelectionRequestEvent.property 64
-XSelectionRequestEvent.time 72
-XSelectionRequestEvent 80
-XNoExposeEvent.type 0
-XNoExposeEvent.serial 8
-XNoExposeEvent.send_event 16
+XkbNamesNotifyEvent.num_lvls 64
+XkbNamesNotifyEvent.num_radio_groups 72
+XkbNamesNotifyEvent.num_types 56
+XkbNamesNotifyEvent.send_event 16
+XkbNamesNotifyEvent.serial 8
+XkbNamesNotifyEvent.time 32
+XkbNamesNotifyEvent.type 0
+XkbNamesNotifyEvent.xkb_type 40
+XkbNewKeyboardNotifyEvent 80
+XkbNewKeyboardNotifyEvent.changed 68
+XkbNewKeyboardNotifyEvent.device 44
+XkbNewKeyboardNotifyEvent.display 24
+XkbNewKeyboardNotifyEvent.max_key_code 56
+XkbNewKeyboardNotifyEvent.min_key_code 52
+XkbNewKeyboardNotifyEvent.old_device 48
+XkbNewKeyboardNotifyEvent.old_max_key_code 64
+XkbNewKeyboardNotifyEvent.old_min_key_code 60
+XkbNewKeyboardNotifyEvent.req_major 72
+XkbNewKeyboardNotifyEvent.req_minor 73
+XkbNewKeyboardNotifyEvent.send_event 16
+XkbNewKeyboardNotifyEvent.serial 8
+XkbNewKeyboardNotifyEvent.time 32
+XkbNewKeyboardNotifyEvent.type 0
+XkbNewKeyboardNotifyEvent.xkb_type 40
+XkbStateNotifyEvent 104
+XkbStateNotifyEvent.base_group 56
+XkbStateNotifyEvent.base_mods 72
+XkbStateNotifyEvent.changed 48
+XkbStateNotifyEvent.compat_grab_mods 89
+XkbStateNotifyEvent.compat_lookup_mods 91
+XkbStateNotifyEvent.compat_state 84
+XkbStateNotifyEvent.device 44
+XkbStateNotifyEvent.display 24
+XkbStateNotifyEvent.event_type 97
+XkbStateNotifyEvent.grab_mods 88
+XkbStateNotifyEvent.group 52
+XkbStateNotifyEvent.keycode 96
+XkbStateNotifyEvent.latched_group 60
+XkbStateNotifyEvent.latched_mods 76
+XkbStateNotifyEvent.locked_group 64
+XkbStateNotifyEvent.locked_mods 80
+XkbStateNotifyEvent.lookup_mods 90
+XkbStateNotifyEvent.mods 68
+XkbStateNotifyEvent.ptr_buttons 92
+XkbStateNotifyEvent.req_major 98
+XkbStateNotifyEvent.req_minor 99
+XkbStateNotifyEvent.send_event 16
+XkbStateNotifyEvent.serial 8
+XkbStateNotifyEvent.time 32
+XkbStateNotifyEvent.type 0
+XkbStateNotifyEvent.xkb_type 40
+XKeyboardControl 32
+XKeyboardControl.auto_repeat_mode 28
+XKeyboardControl.bell_duration 12
+XKeyboardControl.bell_percent 4
+XKeyboardControl.bell_pitch 8
+XKeyboardControl.key 24
+XKeyboardControl.key_click_percent 0
+XKeyboardControl.led 16
+XKeyboardControl.led_mode 20
+XKeyboardState 64
+XKeyboardState.auto_repeats 28
+XKeyboardState.bell_duration 12
+XKeyboardState.bell_percent 4
+XKeyboardState.bell_pitch 8
+XKeyboardState.global_auto_repeat 24
+XKeyboardState.key_click_percent 0
+XKeyboardState.led_mask 16
+XKeyEvent 96
+XKeyEvent.display 24
+XKeyEvent.keycode 84
+XKeyEvent.root 40
+XKeyEvent.same_screen 88
+XKeyEvent.send_event 16
+XKeyEvent.serial 8
+XKeyEvent.state 80
+XKeyEvent.subwindow 48
+XKeyEvent.time 56
+XKeyEvent.type 0
+XKeyEvent.window 32
+XKeyEvent.x 64
+XKeyEvent.x_root 72
+XKeyEvent.y 68
+XKeyEvent.y_root 76
+XKeymapEvent 72
+XKeymapEvent.display 24
+XKeymapEvent.key_vector 40
+XKeymapEvent.send_event 16
+XKeymapEvent.serial 8
+XKeymapEvent.type 0
+XKeymapEvent.window 32
+XMapEvent 56
+XMapEvent.display 24
+XMapEvent.event 32
+XMapEvent.override_redirect 48
+XMapEvent.send_event 16
+XMapEvent.serial 8
+XMapEvent.type 0
+XMapEvent.window 40
+XMappingEvent 56
+XMappingEvent.count 48
+XMappingEvent.display 24
+XMappingEvent.first_keycode 44
+XMappingEvent.request 40
+XMappingEvent.send_event 16
+XMappingEvent.serial 8
+XMappingEvent.type 0
+XMappingEvent.window 32
+XMapRequestEvent 48
+XMapRequestEvent.display 24
+XMapRequestEvent.parent 32
+XMapRequestEvent.send_event 16
+XMapRequestEvent.serial 8
+XMapRequestEvent.type 0
+XMapRequestEvent.window 40
+XmbTextItem 24
+XmbTextItem.chars 0
+XmbTextItem.delta 12
+XmbTextItem.font_set 16
+XmbTextItem.nchars 8
+XModifierKeymap 16
+XModifierKeymap.max_keypermod 0
+XModifierKeymap.modifiermap 8
+XMotionEvent 96
+XMotionEvent.display 24
+XMotionEvent.is_hint 84
+XMotionEvent.root 40
+XMotionEvent.same_screen 88
+XMotionEvent.send_event 16
+XMotionEvent.serial 8
+XMotionEvent.state 80
+XMotionEvent.subwindow 48
+XMotionEvent.time 56
+XMotionEvent.type 0
+XMotionEvent.window 32
+XMotionEvent.x 64
+XMotionEvent.x_root 72
+XMotionEvent.y 68
+XMotionEvent.y_root 76
+XNoExposeEvent 48
XNoExposeEvent.display 24
XNoExposeEvent.drawable 32
XNoExposeEvent.major_code 40
XNoExposeEvent.minor_code 44
-XNoExposeEvent 48
-XHostAddress.family 0
-XHostAddress.length 4
-XHostAddress.address 8
-XHostAddress 16
-XColormapEvent.type 0
-XColormapEvent.serial 8
-XColormapEvent.send_event 16
-XColormapEvent.display 24
-XColormapEvent.window 32
-XColormapEvent.colormap 40
-XColormapEvent.new 48
-XColormapEvent.state 52
-XColormapEvent 56
-ColorEntry.r 0
-ColorEntry.g 1
-ColorEntry.b 2
-ColorEntry.flags 3
-ColorEntry 4
-XResizeRequestEvent.type 0
-XResizeRequestEvent.serial 8
-XResizeRequestEvent.send_event 16
-XResizeRequestEvent.display 24
-XResizeRequestEvent.window 32
-XResizeRequestEvent.width 40
-XResizeRequestEvent.height 44
-XResizeRequestEvent 48
-Depth.depth 0
-Depth.nvisuals 4
-Depth.visuals 8
-Depth 16
-XPropertyEvent.type 0
-XPropertyEvent.serial 8
-XPropertyEvent.send_event 16
-XPropertyEvent.display 24
-XPropertyEvent.window 32
-XPropertyEvent.atom 40
-XPropertyEvent.time 48
-XPropertyEvent.state 56
+XNoExposeEvent.send_event 16
+XNoExposeEvent.serial 8
+XNoExposeEvent.type 0
+XOMCharSetList 16
+XOMCharSetList.charset_count 0
+XOMCharSetList.charset_list 8
+XOMFontInfo 24
+XOMFontInfo.font_name_list 16
+XOMFontInfo.font_struct_list 8
+XOMFontInfo.num_font 0
+XOMOrientation 16
+XOMOrientation.num_orientation 0
+XOMOrientation.orientation 8
+XPixmapFormatValues 12
+XPixmapFormatValues.bits_per_pixel 4
+XPixmapFormatValues.depth 0
+XPixmapFormatValues.scanline_pad 8
+XPoint 4
+XPoint.x 0
+XPoint.y 2
XPropertyEvent 64
-XDestroyWindowEvent.type 0
-XDestroyWindowEvent.serial 8
-XDestroyWindowEvent.send_event 16
-XDestroyWindowEvent.display 24
-XDestroyWindowEvent.event 32
-XDestroyWindowEvent.window 40
-XDestroyWindowEvent 48
-XStandardColormap.colormap 0
-XStandardColormap.red_max 8
-XStandardColormap.red_mult 16
-XStandardColormap.green_max 24
-XStandardColormap.green_mult 32
+XPropertyEvent.atom 40
+XPropertyEvent.display 24
+XPropertyEvent.send_event 16
+XPropertyEvent.serial 8
+XPropertyEvent.state 56
+XPropertyEvent.time 48
+XPropertyEvent.type 0
+XPropertyEvent.window 32
+XRectangle 8
+XRectangle.height 6
+XRectangle.width 4
+XRectangle.x 0
+XRectangle.y 2
+XRenderDirectFormat 16
+XRenderDirectFormat.alpha 12
+XRenderDirectFormat.alphaMask 14
+XRenderDirectFormat.blue 8
+XRenderDirectFormat.blueMask 10
+XRenderDirectFormat.green 4
+XRenderDirectFormat.greenMask 6
+XRenderDirectFormat.red 0
+XRenderDirectFormat.redMask 2
+XRenderPictFormat 40
+XRenderPictFormat.colormap 32
+XRenderPictFormat.depth 12
+XRenderPictFormat.direct 16
+XRenderPictFormat.id 0
+XRenderPictFormat.type 8
+XReparentEvent 72
+XReparentEvent.display 24
+XReparentEvent.event 32
+XReparentEvent.override_redirect 64
+XReparentEvent.parent 48
+XReparentEvent.send_event 16
+XReparentEvent.serial 8
+XReparentEvent.type 0
+XReparentEvent.window 40
+XReparentEvent.x 56
+XReparentEvent.y 60
+XResizeRequestEvent 48
+XResizeRequestEvent.display 24
+XResizeRequestEvent.height 44
+XResizeRequestEvent.send_event 16
+XResizeRequestEvent.serial 8
+XResizeRequestEvent.type 0
+XResizeRequestEvent.width 40
+XResizeRequestEvent.window 32
+XSegment 8
+XSegment.x1 0
+XSegment.x2 4
+XSegment.y1 2
+XSegment.y2 6
+XSelectionClearEvent 56
+XSelectionClearEvent.display 24
+XSelectionClearEvent.selection 40
+XSelectionClearEvent.send_event 16
+XSelectionClearEvent.serial 8
+XSelectionClearEvent.time 48
+XSelectionClearEvent.type 0
+XSelectionClearEvent.window 32
+XSelectionEvent 72
+XSelectionEvent.display 24
+XSelectionEvent.property 56
+XSelectionEvent.requestor 32
+XSelectionEvent.selection 40
+XSelectionEvent.send_event 16
+XSelectionEvent.serial 8
+XSelectionEvent.target 48
+XSelectionEvent.time 64
+XSelectionEvent.type 0
+XSelectionRequestEvent 80
+XSelectionRequestEvent.display 24
+XSelectionRequestEvent.owner 32
+XSelectionRequestEvent.property 64
+XSelectionRequestEvent.requestor 40
+XSelectionRequestEvent.selection 48
+XSelectionRequestEvent.send_event 16
+XSelectionRequestEvent.serial 8
+XSelectionRequestEvent.target 56
+XSelectionRequestEvent.time 72
+XSelectionRequestEvent.type 0
+XSetWindowAttributes 112
+XSetWindowAttributes.background_pixel 8
+XSetWindowAttributes.background_pixmap 0
+XSetWindowAttributes.backing_pixel 56
+XSetWindowAttributes.backing_planes 48
+XSetWindowAttributes.backing_store 40
+XSetWindowAttributes.bit_gravity 32
+XSetWindowAttributes.border_pixel 24
+XSetWindowAttributes.border_pixmap 16
+XSetWindowAttributes.colormap 96
+XSetWindowAttributes.cursor 104
+XSetWindowAttributes.do_not_propagate_mask 80
+XSetWindowAttributes.event_mask 72
+XSetWindowAttributes.override_redirect 88
+XSetWindowAttributes.save_under 64
+XSetWindowAttributes.win_gravity 36
+XSizeHints 80
+XSizeHints.base_height 68
+XSizeHints.base_width 64
+XSizeHints.flags 0
+XSizeHints.height 20
+XSizeHints.height_inc 44
+XSizeHints.max_aspect.x 56
+XSizeHints.max_aspect.y 60
+XSizeHints.max_height 36
+XSizeHints.max_width 32
+XSizeHints.min_aspect.x 48
+XSizeHints.min_aspect.y 52
+XSizeHints.min_height 28
+XSizeHints.min_width 24
+XSizeHints.width 16
+XSizeHints.width_inc 40
+XSizeHints.win_gravity 72
+XSizeHints.x 8
+XSizeHints.y 12
+XStandardColormap 80
+XStandardColormap.base_pixel 56
XStandardColormap.blue_max 40
XStandardColormap.blue_mult 48
-XStandardColormap.base_pixel 56
-XStandardColormap.visualid 64
+XStandardColormap.colormap 0
+XStandardColormap.green_max 24
+XStandardColormap.green_mult 32
XStandardColormap.killid 72
-XStandardColormap 80
-XComposeStatus.compose_ptr 0
-XComposeStatus.chars_matched 8
-XComposeStatus 16
-AwtGraphicsConfigData.awt_depth 0
-AwtGraphicsConfigData.awt_cmap 8
-AwtGraphicsConfigData.awt_visInfo 16
-AwtGraphicsConfigData.awt_num_colors 80
-AwtGraphicsConfigData.awtImage 88
-AwtGraphicsConfigData.AwtColorMatch 96
-AwtGraphicsConfigData.monoImage 104
-AwtGraphicsConfigData.monoPixmap 112
-AwtGraphicsConfigData.monoPixmapWidth 120
-AwtGraphicsConfigData.monoPixmapHeight 124
-AwtGraphicsConfigData.monoPixmapGC 128
-AwtGraphicsConfigData.pixelStride 136
-AwtGraphicsConfigData.color_data 144
-AwtGraphicsConfigData.glxInfo 152
-AwtGraphicsConfigData.isTranslucencySupported 160
-AwtGraphicsConfigData.renderPictFormat 168
-AwtGraphicsConfigData 208
-XColor.pixel 0
-XColor.red 8
-XColor.green 10
-XColor.blue 12
-XColor.flags 14
-XColor.pad 15
-XColor 16
-XTextProperty.value 0
+XStandardColormap.red_max 8
+XStandardColormap.red_mult 16
+XStandardColormap.visualid 64
+XTextItem16 24
+XTextItem16.chars 0
+XTextItem16.delta 12
+XTextItem16.font 16
+XTextItem16.nchars 8
+XTextItem 24
+XTextItem.chars 0
+XTextItem.delta 12
+XTextItem.font 16
+XTextItem.nchars 8
+XTextProperty 32
XTextProperty.encoding 8
XTextProperty.format 16
XTextProperty.nitems 24
-XTextProperty 32
+XTextProperty.value 0
+XTimeCoord 16
+XTimeCoord.time 0
+XTimeCoord.x 8
+XTimeCoord.y 10
+XUnmapEvent 56
+XUnmapEvent.display 24
+XUnmapEvent.event 32
+XUnmapEvent.from_configure 48
+XUnmapEvent.send_event 16
+XUnmapEvent.serial 8
+XUnmapEvent.type 0
+XUnmapEvent.window 40
+XVisibilityEvent 48
+XVisibilityEvent.display 24
+XVisibilityEvent.send_event 16
+XVisibilityEvent.serial 8
+XVisibilityEvent.state 40
+XVisibilityEvent.type 0
+XVisibilityEvent.window 32
+XVisualInfo 64
+XVisualInfo.bits_per_rgb 60
+XVisualInfo.blue_mask 48
+XVisualInfo.class 24
+XVisualInfo.colormap_size 56
+XVisualInfo.depth 20
+XVisualInfo.green_mask 40
+XVisualInfo.red_mask 32
+XVisualInfo.screen 16
+XVisualInfo.visual 0
+XVisualInfo.visualid 8
+XwcTextItem 24
+XwcTextItem.chars 0
+XwcTextItem.delta 12
+XwcTextItem.font_set 16
+XwcTextItem.nchars 8
+XWindowAttributes 136
+XWindowAttributes.all_event_masks 96
+XWindowAttributes.backing_pixel 64
+XWindowAttributes.backing_planes 56
+XWindowAttributes.backing_store 52
+XWindowAttributes.bit_gravity 44
+XWindowAttributes.border_width 16
+XWindowAttributes.class 40
+XWindowAttributes.colormap 80
+XWindowAttributes.depth 20
+XWindowAttributes.do_not_propagate_mask 112
+XWindowAttributes.height 12
+XWindowAttributes.map_installed 88
+XWindowAttributes.map_state 92
+XWindowAttributes.override_redirect 120
+XWindowAttributes.root 32
+XWindowAttributes.save_under 72
+XWindowAttributes.screen 128
+XWindowAttributes.visual 24
+XWindowAttributes.width 8
+XWindowAttributes.win_gravity 48
+XWindowAttributes.x 0
+XWindowAttributes.y 4
+XWindowAttributes.your_event_mask 104
+XWindowChanges 40
+XWindowChanges.border_width 16
+XWindowChanges.height 12
+XWindowChanges.sibling 24
+XWindowChanges.stack_mode 32
+XWindowChanges.width 8
+XWindowChanges.x 0
+XWindowChanges.y 4
+XWMHints 56
+XWMHints.flags 0
+XWMHints.icon_mask 40
+XWMHints.icon_pixmap 16
+XWMHints.icon_window 24
+XWMHints.icon_x 32
+XWMHints.icon_y 36
+XWMHints.initial_state 12
+XWMHints.input 8
+XWMHints.window_group 48
diff --git a/make/data/x11wrappergen/sizes.64-solaris-i386 b/make/data/x11wrappergen/sizes.64-solaris-i386
deleted file mode 100644
index 9f0e60fa4e7..00000000000
--- a/make/data/x11wrappergen/sizes.64-solaris-i386
+++ /dev/null
@@ -1,1017 +0,0 @@
-long 8
-int 4
-short 2
-ptr 8
-Bool 4
-Atom 8
-Window 8
-XExtData.number 0
-XExtData.next 8
-XExtData.free_private 16
-XExtData.private_data 24
-XExtData 32
-XIMStringConversionCallbackStruct.position 0
-XIMStringConversionCallbackStruct.direction 4
-XIMStringConversionCallbackStruct.operation 8
-XIMStringConversionCallbackStruct.factor 10
-XIMStringConversionCallbackStruct.text 16
-XIMStringConversionCallbackStruct 24
-XkbNewKeyboardNotifyEvent.type 0
-XkbNewKeyboardNotifyEvent.serial 8
-XkbNewKeyboardNotifyEvent.send_event 16
-XkbNewKeyboardNotifyEvent.display 24
-XkbNewKeyboardNotifyEvent.time 32
-XkbNewKeyboardNotifyEvent.xkb_type 40
-XkbNewKeyboardNotifyEvent.device 44
-XkbNewKeyboardNotifyEvent.old_device 48
-XkbNewKeyboardNotifyEvent.min_key_code 52
-XkbNewKeyboardNotifyEvent.max_key_code 56
-XkbNewKeyboardNotifyEvent.old_min_key_code 60
-XkbNewKeyboardNotifyEvent.old_max_key_code 64
-XkbNewKeyboardNotifyEvent.changed 68
-XkbNewKeyboardNotifyEvent.req_major 72
-XkbNewKeyboardNotifyEvent.req_minor 73
-XkbNewKeyboardNotifyEvent 80
-XTimeCoord.time 0
-XTimeCoord.x 8
-XTimeCoord.y 10
-XTimeCoord 16
-XkbCompatMapNotifyEvent.type 0
-XkbCompatMapNotifyEvent.serial 8
-XkbCompatMapNotifyEvent.send_event 16
-XkbCompatMapNotifyEvent.display 24
-XkbCompatMapNotifyEvent.time 32
-XkbCompatMapNotifyEvent.xkb_type 40
-XkbCompatMapNotifyEvent.device 44
-XkbCompatMapNotifyEvent.changed_groups 48
-XkbCompatMapNotifyEvent.first_si 52
-XkbCompatMapNotifyEvent.num_si 56
-XkbCompatMapNotifyEvent.num_total_si 60
-XkbCompatMapNotifyEvent 64
-XIMStatusDrawCallbackStruct.type 0
-XIMStatusDrawCallbackStruct.data 8
-XIMStatusDrawCallbackStruct 16
-XKeyboardControl.key_click_percent 0
-XKeyboardControl.bell_percent 4
-XKeyboardControl.bell_pitch 8
-XKeyboardControl.bell_duration 12
-XKeyboardControl.led 16
-XKeyboardControl.led_mode 20
-XKeyboardControl.key 24
-XKeyboardControl.auto_repeat_mode 28
-XKeyboardControl 32
-XSelectionClearEvent.type 0
-XSelectionClearEvent.serial 8
-XSelectionClearEvent.send_event 16
-XSelectionClearEvent.display 24
-XSelectionClearEvent.window 32
-XSelectionClearEvent.selection 40
-XSelectionClearEvent.time 48
-XSelectionClearEvent 56
-XWindowChanges.x 0
-XWindowChanges.y 4
-XWindowChanges.width 8
-XWindowChanges.height 12
-XWindowChanges.border_width 16
-XWindowChanges.sibling 24
-XWindowChanges.stack_mode 32
-XWindowChanges 40
-XIMPreeditCaretCallbackStruct.position 0
-XIMPreeditCaretCallbackStruct.direction 4
-XIMPreeditCaretCallbackStruct.style 8
-XIMPreeditCaretCallbackStruct 12
-XOMCharSetList.charset_count 0
-XOMCharSetList.charset_list 8
-XOMCharSetList 16
-XOMFontInfo.num_font 0
-XOMFontInfo.font_struct_list 8
-XOMFontInfo.font_name_list 16
-XOMFontInfo 24
-AwtScreenData.numConfigs 0
-AwtScreenData.root 8
-AwtScreenData.whitepixel 16
-AwtScreenData.blackpixel 24
-AwtScreenData.defaultConfig 32
-AwtScreenData.configs 40
-AwtScreenData 48
-XIMHotKeyTrigger.keysym 0
-XIMHotKeyTrigger.modifier 8
-XIMHotKeyTrigger.modifier_mask 12
-XIMHotKeyTrigger 16
-XCirculateEvent.type 0
-XCirculateEvent.serial 8
-XCirculateEvent.send_event 16
-XCirculateEvent.display 24
-XCirculateEvent.event 32
-XCirculateEvent.window 40
-XCirculateEvent.place 48
-XCirculateEvent 56
-Screen.ext_data 0
-Screen.display 8
-Screen.root 16
-Screen.width 24
-Screen.height 28
-Screen.mwidth 32
-Screen.mheight 36
-Screen.ndepths 40
-Screen.depths 48
-Screen.root_depth 56
-Screen.root_visual 64
-Screen.default_gc 72
-Screen.cmap 80
-Screen.white_pixel 88
-Screen.black_pixel 96
-Screen.max_maps 104
-Screen.min_maps 108
-Screen.backing_store 112
-Screen.save_unders 116
-Screen.root_input_mask 120
-Screen 128
-XMapRequestEvent.type 0
-XMapRequestEvent.serial 8
-XMapRequestEvent.send_event 16
-XMapRequestEvent.display 24
-XMapRequestEvent.parent 32
-XMapRequestEvent.window 40
-XMapRequestEvent 48
-XIMText.length 0
-XIMText.feedback 8
-XIMText.encoding_is_wchar 16
-XIMText.string 24
-XIMText 32
-XGraphicsExposeEvent.type 0
-XGraphicsExposeEvent.serial 8
-XGraphicsExposeEvent.send_event 16
-XGraphicsExposeEvent.display 24
-XGraphicsExposeEvent.drawable 32
-XGraphicsExposeEvent.x 40
-XGraphicsExposeEvent.y 44
-XGraphicsExposeEvent.width 48
-XGraphicsExposeEvent.height 52
-XGraphicsExposeEvent.count 56
-XGraphicsExposeEvent.major_code 60
-XGraphicsExposeEvent.minor_code 64
-XGraphicsExposeEvent 72
-XEvent.type 0
-XEvent.xany 0
-XEvent.xkey 0
-XEvent.xbutton 0
-XEvent.xmotion 0
-XEvent.xcrossing 0
-XEvent.xfocus 0
-XEvent.xexpose 0
-XEvent.xgraphicsexpose 0
-XEvent.xnoexpose 0
-XEvent.xvisibility 0
-XEvent.xcreatewindow 0
-XEvent.xdestroywindow 0
-XEvent.xunmap 0
-XEvent.xmap 0
-XEvent.xmaprequest 0
-XEvent.xreparent 0
-XEvent.xconfigure 0
-XEvent.xgravity 0
-XEvent.xresizerequest 0
-XEvent.xconfigurerequest 0
-XEvent.xcirculate 0
-XEvent.xcirculaterequest 0
-XEvent.xproperty 0
-XEvent.xselectionclear 0
-XEvent.xselectionrequest 0
-XEvent.xselection 0
-XEvent.xcolormap 0
-XEvent.xclient 0
-XEvent.xmapping 0
-XEvent.xerror 0
-XEvent.xkeymap 0
-XEvent.pad 0
-XEvent 192
-XRenderDirectFormat.red 0
-XRenderDirectFormat.redMask 2
-XRenderDirectFormat.green 4
-XRenderDirectFormat.greenMask 6
-XRenderDirectFormat.blue 8
-XRenderDirectFormat.blueMask 10
-XRenderDirectFormat.alpha 12
-XRenderDirectFormat.alphaMask 14
-XRenderDirectFormat 16
-ColorData.awt_Colors 0
-ColorData.awt_numICMcolors 8
-ColorData.awt_icmLUT 16
-ColorData.awt_icmLUT2Colors 24
-ColorData.img_grays 32
-ColorData.img_clr_tbl 40
-ColorData.img_oda_red 48
-ColorData.img_oda_green 56
-ColorData.img_oda_blue 64
-ColorData.pGrayInverseLutData 72
-ColorData.screendata 80
-ColorData.representsPrimaries 84
-ColorData 88
-XFontStruct.ext_data 0
-XFontStruct.fid 8
-XFontStruct.direction 16
-XFontStruct.min_char_or_byte2 20
-XFontStruct.max_char_or_byte2 24
-XFontStruct.min_byte1 28
-XFontStruct.max_byte1 32
-XFontStruct.all_chars_exist 36
-XFontStruct.n_properties 44
-XFontStruct.properties 48
-XFontStruct.min_bounds 56
-XFontStruct.max_bounds 68
-XFontStruct.per_char 80
-XFontStruct.ascent 88
-XFontStruct.descent 92
-XFontStruct 96
-XExtCodes.extension 0
-XExtCodes.major_opcode 4
-XExtCodes.first_event 8
-XExtCodes.first_error 12
-XExtCodes 16
-XFontSetExtents.max_ink_extent 0
-XFontSetExtents.max_logical_extent 8
-XFontSetExtents 16
-XSelectionEvent.type 0
-XSelectionEvent.serial 8
-XSelectionEvent.send_event 16
-XSelectionEvent.display 24
-XSelectionEvent.requestor 32
-XSelectionEvent.selection 40
-XSelectionEvent.target 48
-XSelectionEvent.property 56
-XSelectionEvent.time 64
-XSelectionEvent 72
-XArc.x 0
-XArc.y 2
-XArc.width 4
-XArc.height 6
-XArc.angle1 8
-XArc.angle2 10
-XArc 12
-XErrorEvent.type 0
-XErrorEvent.display 8
-XErrorEvent.resourceid 16
-XErrorEvent.serial 24
-XErrorEvent.error_code 32
-XErrorEvent.request_code 33
-XErrorEvent.minor_code 34
-XErrorEvent 40
-XConfigureRequestEvent.type 0
-XConfigureRequestEvent.serial 8
-XConfigureRequestEvent.send_event 16
-XConfigureRequestEvent.display 24
-XConfigureRequestEvent.parent 32
-XConfigureRequestEvent.window 40
-XConfigureRequestEvent.x 48
-XConfigureRequestEvent.y 52
-XConfigureRequestEvent.width 56
-XConfigureRequestEvent.height 60
-XConfigureRequestEvent.border_width 64
-XConfigureRequestEvent.above 72
-XConfigureRequestEvent.detail 80
-XConfigureRequestEvent.value_mask 88
-XConfigureRequestEvent 96
-ScreenFormat.ext_data 0
-ScreenFormat.depth 8
-ScreenFormat.bits_per_pixel 12
-ScreenFormat.scanline_pad 16
-ScreenFormat 24
-XButtonEvent.type 0
-XButtonEvent.serial 8
-XButtonEvent.send_event 16
-XButtonEvent.display 24
-XButtonEvent.window 32
-XButtonEvent.root 40
-XButtonEvent.subwindow 48
-XButtonEvent.time 56
-XButtonEvent.x 64
-XButtonEvent.y 68
-XButtonEvent.x_root 72
-XButtonEvent.y_root 76
-XButtonEvent.state 80
-XButtonEvent.button 84
-XButtonEvent.same_screen 88
-XButtonEvent 96
-XFontProp.name 0
-XFontProp.card32 8
-XFontProp 16
-XIMValuesList.count_values 0
-XIMValuesList.supported_values 8
-XIMValuesList 16
-XKeymapEvent.type 0
-XKeymapEvent.serial 8
-XKeymapEvent.send_event 16
-XKeymapEvent.display 24
-XKeymapEvent.window 32
-XKeymapEvent.key_vector 40
-XKeymapEvent 72
-XTextItem16.chars 0
-XTextItem16.nchars 8
-XTextItem16.delta 12
-XTextItem16.font 16
-XTextItem16 24
-XIMPreeditDrawCallbackStruct.caret 0
-XIMPreeditDrawCallbackStruct.chg_first 4
-XIMPreeditDrawCallbackStruct.chg_length 8
-XIMPreeditDrawCallbackStruct.text 16
-XIMPreeditDrawCallbackStruct 24
-XVisualInfo.visual 0
-XVisualInfo.visualid 8
-XVisualInfo.screen 16
-XVisualInfo.depth 20
-XVisualInfo.class 24
-XVisualInfo.red_mask 32
-XVisualInfo.green_mask 40
-XVisualInfo.blue_mask 48
-XVisualInfo.colormap_size 56
-XVisualInfo.bits_per_rgb 60
-XVisualInfo 64
-XkbControlsNotifyEvent.type 0
-XkbControlsNotifyEvent.serial 8
-XkbControlsNotifyEvent.send_event 16
-XkbControlsNotifyEvent.display 24
-XkbControlsNotifyEvent.time 32
-XkbControlsNotifyEvent.xkb_type 40
-XkbControlsNotifyEvent.device 44
-XkbControlsNotifyEvent.changed_ctrls 48
-XkbControlsNotifyEvent.enabled_ctrls 52
-XkbControlsNotifyEvent.enabled_ctrl_changes 56
-XkbControlsNotifyEvent.num_groups 60
-XkbControlsNotifyEvent.keycode 64
-XkbControlsNotifyEvent.event_type 65
-XkbControlsNotifyEvent.req_major 66
-XkbControlsNotifyEvent.req_minor 67
-XkbControlsNotifyEvent 72
-PropMwmHints.flags 0
-PropMwmHints.functions 8
-PropMwmHints.decorations 16
-PropMwmHints.inputMode 24
-PropMwmHints.status 32
-PropMwmHints 40
-XClientMessageEvent.type 0
-XClientMessageEvent.serial 8
-XClientMessageEvent.send_event 16
-XClientMessageEvent.display 24
-XClientMessageEvent.window 32
-XClientMessageEvent.message_type 40
-XClientMessageEvent.format 48
-XClientMessageEvent.data 56
-XClientMessageEvent 96
-XAnyEvent.type 0
-XAnyEvent.serial 8
-XAnyEvent.send_event 16
-XAnyEvent.display 24
-XAnyEvent.window 32
-XAnyEvent 40
-XkbIndicatorNotifyEvent.type 0
-XkbIndicatorNotifyEvent.serial 8
-XkbIndicatorNotifyEvent.send_event 16
-XkbIndicatorNotifyEvent.display 24
-XkbIndicatorNotifyEvent.time 32
-XkbIndicatorNotifyEvent.xkb_type 40
-XkbIndicatorNotifyEvent.device 44
-XkbIndicatorNotifyEvent.changed 48
-XkbIndicatorNotifyEvent.state 52
-XkbIndicatorNotifyEvent 56
-XIMPreeditStateNotifyCallbackStruct.state 0
-XIMPreeditStateNotifyCallbackStruct 8
-XkbAnyEvent.type 0
-XkbAnyEvent.serial 8
-XkbAnyEvent.send_event 16
-XkbAnyEvent.display 24
-XkbAnyEvent.time 32
-XkbAnyEvent.xkb_type 40
-XkbAnyEvent.device 44
-XkbAnyEvent 48
-XMotionEvent.type 0
-XMotionEvent.serial 8
-XMotionEvent.send_event 16
-XMotionEvent.display 24
-XMotionEvent.window 32
-XMotionEvent.root 40
-XMotionEvent.subwindow 48
-XMotionEvent.time 56
-XMotionEvent.x 64
-XMotionEvent.y 68
-XMotionEvent.x_root 72
-XMotionEvent.y_root 76
-XMotionEvent.state 80
-XMotionEvent.is_hint 84
-XMotionEvent.same_screen 88
-XMotionEvent 96
-XIMHotKeyTriggers.num_hot_key 0
-XIMHotKeyTriggers.key 8
-XIMHotKeyTriggers 16
-XIMStyles.count_styles 0
-XIMStyles.supported_styles 8
-XIMStyles 16
-XkbExtensionDeviceNotifyEvent.type 0
-XkbExtensionDeviceNotifyEvent.serial 8
-XkbExtensionDeviceNotifyEvent.send_event 16
-XkbExtensionDeviceNotifyEvent.display 24
-XkbExtensionDeviceNotifyEvent.time 32
-XkbExtensionDeviceNotifyEvent.xkb_type 40
-XkbExtensionDeviceNotifyEvent.device 44
-XkbExtensionDeviceNotifyEvent.reason 48
-XkbExtensionDeviceNotifyEvent.supported 52
-XkbExtensionDeviceNotifyEvent.unsupported 56
-XkbExtensionDeviceNotifyEvent.first_btn 60
-XkbExtensionDeviceNotifyEvent.num_btns 64
-XkbExtensionDeviceNotifyEvent.leds_defined 68
-XkbExtensionDeviceNotifyEvent.led_state 72
-XkbExtensionDeviceNotifyEvent.led_class 76
-XkbExtensionDeviceNotifyEvent.led_id 80
-XkbExtensionDeviceNotifyEvent 88
-XwcTextItem.chars 0
-XwcTextItem.nchars 8
-XwcTextItem.delta 12
-XwcTextItem.font_set 16
-XwcTextItem 24
-XClassHint.res_name 0
-XClassHint.res_class 8
-XClassHint 16
-XChar2b.byte1 0
-XChar2b.byte2 1
-XChar2b 2
-XSetWindowAttributes.background_pixmap 0
-XSetWindowAttributes.background_pixel 8
-XSetWindowAttributes.border_pixmap 16
-XSetWindowAttributes.border_pixel 24
-XSetWindowAttributes.bit_gravity 32
-XSetWindowAttributes.win_gravity 36
-XSetWindowAttributes.backing_store 40
-XSetWindowAttributes.backing_planes 48
-XSetWindowAttributes.backing_pixel 56
-XSetWindowAttributes.save_under 64
-XSetWindowAttributes.event_mask 72
-XSetWindowAttributes.do_not_propagate_mask 80
-XSetWindowAttributes.override_redirect 88
-XSetWindowAttributes.colormap 96
-XSetWindowAttributes.cursor 104
-XSetWindowAttributes 112
-XRenderPictFormat.id 0
-XRenderPictFormat.type 8
-XRenderPictFormat.depth 12
-XRenderPictFormat.direct 16
-XRenderPictFormat.colormap 32
-XRenderPictFormat 40
-XReparentEvent.type 0
-XReparentEvent.serial 8
-XReparentEvent.send_event 16
-XReparentEvent.display 24
-XReparentEvent.event 32
-XReparentEvent.window 40
-XReparentEvent.parent 48
-XReparentEvent.x 56
-XReparentEvent.y 60
-XReparentEvent.override_redirect 64
-XReparentEvent 72
-XCirculateRequestEvent.type 0
-XCirculateRequestEvent.serial 8
-XCirculateRequestEvent.send_event 16
-XCirculateRequestEvent.display 24
-XCirculateRequestEvent.parent 32
-XCirculateRequestEvent.window 40
-XCirculateRequestEvent.place 48
-XCirculateRequestEvent 56
-XImage.width 0
-XImage.height 4
-XImage.xoffset 8
-XImage.format 12
-XImage.data 16
-XImage.byte_order 24
-XImage.bitmap_unit 28
-XImage.bitmap_bit_order 32
-XImage.bitmap_pad 36
-XImage.depth 40
-XImage.bytes_per_line 44
-XImage.bits_per_pixel 48
-XImage.red_mask 56
-XImage.green_mask 64
-XImage.blue_mask 72
-XImage.obdata 80
-XImage.f.create_image 88
-XImage.f.destroy_image 96
-XImage.f.get_pixel 104
-XImage.f.put_pixel 112
-XImage.f.sub_image 120
-XImage.f.add_pixel 128
-XImage 136
-XKeyEvent.type 0
-XKeyEvent.serial 8
-XKeyEvent.send_event 16
-XKeyEvent.display 24
-XKeyEvent.window 32
-XKeyEvent.root 40
-XKeyEvent.subwindow 48
-XKeyEvent.time 56
-XKeyEvent.x 64
-XKeyEvent.y 68
-XKeyEvent.x_root 72
-XKeyEvent.y_root 76
-XKeyEvent.state 80
-XKeyEvent.keycode 84
-XKeyEvent.same_screen 88
-XKeyEvent 96
-XkbActionMessageEvent.type 0
-XkbActionMessageEvent.serial 8
-XkbActionMessageEvent.send_event 16
-XkbActionMessageEvent.display 24
-XkbActionMessageEvent.time 32
-XkbActionMessageEvent.xkb_type 40
-XkbActionMessageEvent.device 44
-XkbActionMessageEvent.keycode 48
-XkbActionMessageEvent.press 52
-XkbActionMessageEvent.key_event_follows 56
-XkbActionMessageEvent.group 60
-XkbActionMessageEvent.mods 64
-XkbActionMessageEvent.message 68
-XkbActionMessageEvent 80
-XdbeSwapInfo.swap_window 0
-XdbeSwapInfo.swap_action 8
-XdbeSwapInfo 16
-XTextItem.chars 0
-XTextItem.nchars 8
-XTextItem.delta 12
-XTextItem.font 16
-XTextItem 24
-XModifierKeymap.max_keypermod 0
-XModifierKeymap.modifiermap 8
-XModifierKeymap 16
-XCharStruct.lbearing 0
-XCharStruct.rbearing 2
-XCharStruct.width 4
-XCharStruct.ascent 6
-XCharStruct.descent 8
-XCharStruct.attributes 10
-XCharStruct 12
-XGravityEvent.type 0
-XGravityEvent.serial 8
-XGravityEvent.send_event 16
-XGravityEvent.display 24
-XGravityEvent.event 32
-XGravityEvent.window 40
-XGravityEvent.x 48
-XGravityEvent.y 52
-XGravityEvent 56
-Visual.ext_data 0
-Visual.visualid 8
-Visual.class 16
-Visual.red_mask 24
-Visual.green_mask 32
-Visual.blue_mask 40
-Visual.bits_per_rgb 48
-Visual.map_entries 52
-Visual 56
-XOMOrientation.num_orientation 0
-XOMOrientation.orientation 8
-XOMOrientation 16
-XkbAccessXNotifyEvent.type 0
-XkbAccessXNotifyEvent.serial 8
-XkbAccessXNotifyEvent.send_event 16
-XkbAccessXNotifyEvent.display 24
-XkbAccessXNotifyEvent.time 32
-XkbAccessXNotifyEvent.xkb_type 40
-XkbAccessXNotifyEvent.device 44
-XkbAccessXNotifyEvent.detail 48
-XkbAccessXNotifyEvent.keycode 52
-XkbAccessXNotifyEvent.sk_delay 56
-XkbAccessXNotifyEvent.debounce_delay 60
-XkbAccessXNotifyEvent 64
-XWindowAttributes.x 0
-XWindowAttributes.y 4
-XWindowAttributes.width 8
-XWindowAttributes.height 12
-XWindowAttributes.border_width 16
-XWindowAttributes.depth 20
-XWindowAttributes.visual 24
-XWindowAttributes.root 32
-XWindowAttributes.class 40
-XWindowAttributes.bit_gravity 44
-XWindowAttributes.win_gravity 48
-XWindowAttributes.backing_store 52
-XWindowAttributes.backing_planes 56
-XWindowAttributes.backing_pixel 64
-XWindowAttributes.save_under 72
-XWindowAttributes.colormap 80
-XWindowAttributes.map_installed 88
-XWindowAttributes.map_state 92
-XWindowAttributes.all_event_masks 96
-XWindowAttributes.your_event_mask 104
-XWindowAttributes.do_not_propagate_mask 112
-XWindowAttributes.override_redirect 120
-XWindowAttributes.screen 128
-XWindowAttributes 136
-XmbTextItem.chars 0
-XmbTextItem.nchars 8
-XmbTextItem.delta 12
-XmbTextItem.font_set 16
-XmbTextItem 24
-XMappingEvent.type 0
-XMappingEvent.serial 8
-XMappingEvent.send_event 16
-XMappingEvent.display 24
-XMappingEvent.window 32
-XMappingEvent.request 40
-XMappingEvent.first_keycode 44
-XMappingEvent.count 48
-XMappingEvent 56
-XSizeHints.flags 0
-XSizeHints.x 8
-XSizeHints.y 12
-XSizeHints.width 16
-XSizeHints.height 20
-XSizeHints.min_width 24
-XSizeHints.min_height 28
-XSizeHints.max_width 32
-XSizeHints.max_height 36
-XSizeHints.width_inc 40
-XSizeHints.height_inc 44
-XSizeHints.min_aspect.x 48
-XSizeHints.min_aspect.y 52
-XSizeHints.max_aspect.x 56
-XSizeHints.max_aspect.y 60
-XSizeHints.base_width 64
-XSizeHints.base_height 68
-XSizeHints.win_gravity 72
-XSizeHints 80
-XUnmapEvent.type 0
-XUnmapEvent.serial 8
-XUnmapEvent.send_event 16
-XUnmapEvent.display 24
-XUnmapEvent.event 32
-XUnmapEvent.window 40
-XUnmapEvent.from_configure 48
-XUnmapEvent 56
-awtImageData.Depth 0
-awtImageData.wsImageFormat 4
-awtImageData.clrdata 16
-awtImageData.convert 48
-awtImageData 560
-XkbStateNotifyEvent.type 0
-XkbStateNotifyEvent.serial 8
-XkbStateNotifyEvent.send_event 16
-XkbStateNotifyEvent.display 24
-XkbStateNotifyEvent.time 32
-XkbStateNotifyEvent.xkb_type 40
-XkbStateNotifyEvent.device 44
-XkbStateNotifyEvent.changed 48
-XkbStateNotifyEvent.group 52
-XkbStateNotifyEvent.base_group 56
-XkbStateNotifyEvent.latched_group 60
-XkbStateNotifyEvent.locked_group 64
-XkbStateNotifyEvent.mods 68
-XkbStateNotifyEvent.base_mods 72
-XkbStateNotifyEvent.latched_mods 76
-XkbStateNotifyEvent.locked_mods 80
-XkbStateNotifyEvent.compat_state 84
-XkbStateNotifyEvent.grab_mods 88
-XkbStateNotifyEvent.compat_grab_mods 89
-XkbStateNotifyEvent.lookup_mods 90
-XkbStateNotifyEvent.compat_lookup_mods 91
-XkbStateNotifyEvent.ptr_buttons 92
-XkbStateNotifyEvent.keycode 96
-XkbStateNotifyEvent.event_type 97
-XkbStateNotifyEvent.req_major 98
-XkbStateNotifyEvent.req_minor 99
-XkbStateNotifyEvent 104
-XExposeEvent.type 0
-XExposeEvent.serial 8
-XExposeEvent.send_event 16
-XExposeEvent.display 24
-XExposeEvent.window 32
-XExposeEvent.x 40
-XExposeEvent.y 44
-XExposeEvent.width 48
-XExposeEvent.height 52
-XExposeEvent.count 56
-XExposeEvent 64
-XkbMapNotifyEvent.type 0
-XkbMapNotifyEvent.serial 8
-XkbMapNotifyEvent.send_event 16
-XkbMapNotifyEvent.display 24
-XkbMapNotifyEvent.time 32
-XkbMapNotifyEvent.xkb_type 40
-XkbMapNotifyEvent.device 44
-XkbMapNotifyEvent.changed 48
-XkbMapNotifyEvent.flags 52
-XkbMapNotifyEvent.first_type 56
-XkbMapNotifyEvent.num_types 60
-XkbMapNotifyEvent.min_key_code 64
-XkbMapNotifyEvent.max_key_code 65
-XkbMapNotifyEvent.first_key_sym 66
-XkbMapNotifyEvent.first_key_act 67
-XkbMapNotifyEvent.first_key_behavior 68
-XkbMapNotifyEvent.first_key_explicit 69
-XkbMapNotifyEvent.first_modmap_key 70
-XkbMapNotifyEvent.first_vmodmap_key 71
-XkbMapNotifyEvent.num_key_syms 72
-XkbMapNotifyEvent.num_key_acts 76
-XkbMapNotifyEvent.num_key_behaviors 80
-XkbMapNotifyEvent.num_key_explicit 84
-XkbMapNotifyEvent.num_modmap_keys 88
-XkbMapNotifyEvent.num_vmodmap_keys 92
-XkbMapNotifyEvent.vmods 96
-XkbMapNotifyEvent 104
-XGCValues.function 0
-XGCValues.plane_mask 8
-XGCValues.foreground 16
-XGCValues.background 24
-XGCValues.line_width 32
-XGCValues.line_style 36
-XGCValues.cap_style 40
-XGCValues.join_style 44
-XGCValues.fill_style 48
-XGCValues.fill_rule 52
-XGCValues.arc_mode 56
-XGCValues.tile 64
-XGCValues.stipple 72
-XGCValues.ts_x_origin 80
-XGCValues.ts_y_origin 84
-XGCValues.font 88
-XGCValues.subwindow_mode 96
-XGCValues.graphics_exposures 100
-XGCValues.clip_x_origin 104
-XGCValues.clip_y_origin 108
-XGCValues.clip_mask 112
-XGCValues.dash_offset 120
-XGCValues.dashes 124
-XGCValues 128
-XFocusChangeEvent.type 0
-XFocusChangeEvent.serial 8
-XFocusChangeEvent.send_event 16
-XFocusChangeEvent.display 24
-XFocusChangeEvent.window 32
-XFocusChangeEvent.mode 40
-XFocusChangeEvent.detail 44
-XFocusChangeEvent 48
-XPixmapFormatValues.depth 0
-XPixmapFormatValues.bits_per_pixel 4
-XPixmapFormatValues.scanline_pad 8
-XPixmapFormatValues 12
-XMapEvent.type 0
-XMapEvent.serial 8
-XMapEvent.send_event 16
-XMapEvent.display 24
-XMapEvent.event 32
-XMapEvent.window 40
-XMapEvent.override_redirect 48
-XMapEvent 56
-XkbBellNotifyEvent.type 0
-XkbBellNotifyEvent.serial 8
-XkbBellNotifyEvent.send_event 16
-XkbBellNotifyEvent.display 24
-XkbBellNotifyEvent.time 32
-XkbBellNotifyEvent.xkb_type 40
-XkbBellNotifyEvent.device 44
-XkbBellNotifyEvent.percent 48
-XkbBellNotifyEvent.pitch 52
-XkbBellNotifyEvent.duration 56
-XkbBellNotifyEvent.bell_class 60
-XkbBellNotifyEvent.bell_id 64
-XkbBellNotifyEvent.name 72
-XkbBellNotifyEvent.window 80
-XkbBellNotifyEvent.event_only 88
-XkbBellNotifyEvent 96
-XIMStringConversionText.length 0
-XIMStringConversionText.feedback 8
-XIMStringConversionText.encoding_is_wchar 16
-XIMStringConversionText.string 24
-XIMStringConversionText 32
-XKeyboardState.key_click_percent 0
-XKeyboardState.bell_percent 4
-XKeyboardState.bell_pitch 8
-XKeyboardState.bell_duration 12
-XKeyboardState.led_mask 16
-XKeyboardState.global_auto_repeat 24
-XKeyboardState.auto_repeats 28
-XKeyboardState 64
-XkbEvent.type 0
-XkbEvent.any 0
-XkbEvent.new_kbd 0
-XkbEvent.map 0
-XkbEvent.state 0
-XkbEvent.ctrls 0
-XkbEvent.indicators 0
-XkbEvent.names 0
-XkbEvent.compat 0
-XkbEvent.bell 0
-XkbEvent.message 0
-XkbEvent.accessx 0
-XkbEvent.device 0
-XkbEvent.core 0
-XkbEvent 192
-XPoint.x 0
-XPoint.y 2
-XPoint 4
-XSegment.x1 0
-XSegment.y1 2
-XSegment.x2 4
-XSegment.y2 6
-XSegment 8
-XIconSize.min_width 0
-XIconSize.min_height 4
-XIconSize.max_width 8
-XIconSize.max_height 12
-XIconSize.width_inc 16
-XIconSize.height_inc 20
-XIconSize 24
-XIMCallback.client_data 0
-XIMCallback.callback 8
-XIMCallback 16
-XConfigureEvent.type 0
-XConfigureEvent.serial 8
-XConfigureEvent.send_event 16
-XConfigureEvent.display 24
-XConfigureEvent.event 32
-XConfigureEvent.window 40
-XConfigureEvent.x 48
-XConfigureEvent.y 52
-XConfigureEvent.width 56
-XConfigureEvent.height 60
-XConfigureEvent.border_width 64
-XConfigureEvent.above 72
-XConfigureEvent.override_redirect 80
-XConfigureEvent 88
-XRectangle.x 0
-XRectangle.y 2
-XRectangle.width 4
-XRectangle.height 6
-XRectangle 8
-XkbNamesNotifyEvent.type 0
-XkbNamesNotifyEvent.serial 8
-XkbNamesNotifyEvent.send_event 16
-XkbNamesNotifyEvent.display 24
-XkbNamesNotifyEvent.time 32
-XkbNamesNotifyEvent.xkb_type 40
-XkbNamesNotifyEvent.device 44
-XkbNamesNotifyEvent.changed 48
-XkbNamesNotifyEvent.first_type 52
-XkbNamesNotifyEvent.num_types 56
-XkbNamesNotifyEvent.first_lvl 60
-XkbNamesNotifyEvent.num_lvls 64
-XkbNamesNotifyEvent.num_aliases 68
-XkbNamesNotifyEvent.num_radio_groups 72
-XkbNamesNotifyEvent.changed_vmods 76
-XkbNamesNotifyEvent.changed_groups 80
-XkbNamesNotifyEvent.changed_indicators 84
-XkbNamesNotifyEvent.first_key 88
-XkbNamesNotifyEvent.num_keys 92
-XkbNamesNotifyEvent 96
-XCreateWindowEvent.type 0
-XCreateWindowEvent.serial 8
-XCreateWindowEvent.send_event 16
-XCreateWindowEvent.display 24
-XCreateWindowEvent.parent 32
-XCreateWindowEvent.window 40
-XCreateWindowEvent.x 48
-XCreateWindowEvent.y 52
-XCreateWindowEvent.width 56
-XCreateWindowEvent.height 60
-XCreateWindowEvent.border_width 64
-XCreateWindowEvent.override_redirect 68
-XCreateWindowEvent 72
-XVisibilityEvent.type 0
-XVisibilityEvent.serial 8
-XVisibilityEvent.send_event 16
-XVisibilityEvent.display 24
-XVisibilityEvent.window 32
-XVisibilityEvent.state 40
-XVisibilityEvent 48
-XWMHints.flags 0
-XWMHints.initial_state 12
-XWMHints.icon_pixmap 16
-XWMHints.icon_window 24
-XWMHints.icon_x 32
-XWMHints.icon_y 36
-XWMHints.icon_mask 40
-XWMHints.input 8
-XWMHints.window_group 48
-XWMHints 56
-XCrossingEvent.type 0
-XCrossingEvent.serial 8
-XCrossingEvent.send_event 16
-XCrossingEvent.display 24
-XCrossingEvent.window 32
-XCrossingEvent.root 40
-XCrossingEvent.subwindow 48
-XCrossingEvent.time 56
-XCrossingEvent.x 64
-XCrossingEvent.y 68
-XCrossingEvent.x_root 72
-XCrossingEvent.y_root 76
-XCrossingEvent.mode 80
-XCrossingEvent.detail 84
-XCrossingEvent.same_screen 88
-XCrossingEvent.focus 92
-XCrossingEvent.state 96
-XCrossingEvent 104
-XSelectionRequestEvent.type 0
-XSelectionRequestEvent.serial 8
-XSelectionRequestEvent.send_event 16
-XSelectionRequestEvent.display 24
-XSelectionRequestEvent.owner 32
-XSelectionRequestEvent.requestor 40
-XSelectionRequestEvent.selection 48
-XSelectionRequestEvent.target 56
-XSelectionRequestEvent.property 64
-XSelectionRequestEvent.time 72
-XSelectionRequestEvent 80
-XNoExposeEvent.type 0
-XNoExposeEvent.serial 8
-XNoExposeEvent.send_event 16
-XNoExposeEvent.display 24
-XNoExposeEvent.drawable 32
-XNoExposeEvent.major_code 40
-XNoExposeEvent.minor_code 44
-XNoExposeEvent 48
-XHostAddress.family 0
-XHostAddress.length 4
-XHostAddress.address 8
-XHostAddress 16
-XColormapEvent.type 0
-XColormapEvent.serial 8
-XColormapEvent.send_event 16
-XColormapEvent.display 24
-XColormapEvent.window 32
-XColormapEvent.colormap 40
-XColormapEvent.new 48
-XColormapEvent.state 52
-XColormapEvent 56
-ColorEntry.r 0
-ColorEntry.g 1
-ColorEntry.b 2
-ColorEntry.flags 3
-ColorEntry 4
-XResizeRequestEvent.type 0
-XResizeRequestEvent.serial 8
-XResizeRequestEvent.send_event 16
-XResizeRequestEvent.display 24
-XResizeRequestEvent.window 32
-XResizeRequestEvent.width 40
-XResizeRequestEvent.height 44
-XResizeRequestEvent 48
-Depth.depth 0
-Depth.nvisuals 4
-Depth.visuals 8
-Depth 16
-XPropertyEvent.type 0
-XPropertyEvent.serial 8
-XPropertyEvent.send_event 16
-XPropertyEvent.display 24
-XPropertyEvent.window 32
-XPropertyEvent.atom 40
-XPropertyEvent.time 48
-XPropertyEvent.state 56
-XPropertyEvent 64
-XDestroyWindowEvent.type 0
-XDestroyWindowEvent.serial 8
-XDestroyWindowEvent.send_event 16
-XDestroyWindowEvent.display 24
-XDestroyWindowEvent.event 32
-XDestroyWindowEvent.window 40
-XDestroyWindowEvent 48
-XStandardColormap.colormap 0
-XStandardColormap.red_max 8
-XStandardColormap.red_mult 16
-XStandardColormap.green_max 24
-XStandardColormap.green_mult 32
-XStandardColormap.blue_max 40
-XStandardColormap.blue_mult 48
-XStandardColormap.base_pixel 56
-XStandardColormap.visualid 64
-XStandardColormap.killid 72
-XStandardColormap 80
-XComposeStatus.compose_ptr 0
-XComposeStatus.chars_matched 8
-XComposeStatus 16
-AwtGraphicsConfigData.awt_depth 0
-AwtGraphicsConfigData.awt_cmap 8
-AwtGraphicsConfigData.awt_visInfo 16
-AwtGraphicsConfigData.awt_num_colors 80
-AwtGraphicsConfigData.awtImage 88
-AwtGraphicsConfigData.AwtColorMatch 96
-AwtGraphicsConfigData.monoImage 104
-AwtGraphicsConfigData.monoPixmap 112
-AwtGraphicsConfigData.monoPixmapWidth 120
-AwtGraphicsConfigData.monoPixmapHeight 124
-AwtGraphicsConfigData.monoPixmapGC 128
-AwtGraphicsConfigData.pixelStride 136
-AwtGraphicsConfigData.color_data 144
-AwtGraphicsConfigData.glxInfo 152
-AwtGraphicsConfigData.isTranslucencySupported 160
-AwtGraphicsConfigData.renderPictFormat 168
-AwtGraphicsConfigData 208
-XColor.pixel 0
-XColor.red 8
-XColor.green 10
-XColor.blue 12
-XColor.flags 14
-XColor.pad 15
-XColor 16
-XTextProperty.value 0
-XTextProperty.encoding 8
-XTextProperty.format 16
-XTextProperty.nitems 24
-XTextProperty 32
diff --git a/make/data/x11wrappergen/xlibtypes.txt b/make/data/x11wrappergen/xlibtypes.txt
index aa68c212c40..5cdf297897b 100644
--- a/make/data/x11wrappergen/xlibtypes.txt
+++ b/make/data/x11wrappergen/xlibtypes.txt
@@ -1,9 +1,9 @@
//
-//
// This file is used for automated generation of java classes to wrap native structures.
-// The detail on format of this file see WrapperGenerator.java
+// For details on format of this file, see WrapperGenerator.java
//
-// WARNING: if you modified this file, you need to regenerate sizes.64-solaris-i386
+// WARNING: If you modify this file, you need to regenerate sizes-32.txt and sizes-64.txt.
+// Run "make update-x11wrappers" to do this.
//
XExtData
diff --git a/make/devkit/Makefile b/make/devkit/Makefile
index 32fa6f5212e..1bd37951fd3 100644
--- a/make/devkit/Makefile
+++ b/make/devkit/Makefile
@@ -41,7 +41,7 @@
# To build the full set of crosstools for additional platforms, use a command
# line looking like this:
#
-# make tars platforms="x86_64-unknown-linux-gnu sparc64-unknown-linux-gnu"
+# make cross_compile_target="aarch64-linux-gnu" BASE_OS=Fedora27
#
# This is the makefile which iterates over all host and target platforms.
#
@@ -57,8 +57,13 @@ $(info Building on platform $(me))
#
# By default just build for the current platform, which is assumed to be Linux
#
-platforms := $(me)
-host_platforms := $(platforms)
+ifeq ($(cross_compile_target), )
+ platforms := $(me)
+ host_platforms := $(platforms)
+else
+ platforms := $(cross_compile_target)
+ host_platforms := $(me)
+endif
target_platforms := $(platforms)
$(info host_platforms $(host_platforms))
$(info target_platforms $(target_platforms))
diff --git a/make/devkit/Tools.gmk b/make/devkit/Tools.gmk
index 579648646d6..5bc63448111 100644
--- a/make/devkit/Tools.gmk
+++ b/make/devkit/Tools.gmk
@@ -46,6 +46,16 @@ $(info BUILD=$(BUILD))
ARCH := $(word 1,$(subst -, ,$(TARGET)))
$(info ARCH=$(ARCH))
+ifeq ($(BASE_OS), OEL6)
+ OEL_URL := http://yum.oracle.com/repo/OracleLinux/OL6/4/base/$(ARCH)/
+ LINUX_VERSION := OEL6.4
+else ifeq ($(BASE_OS), Fedora27)
+ OEL_URL := https://dl.fedoraproject.org/pub/fedora-secondary/releases/27/Everything/$(ARCH)/os/Packages/
+ LINUX_VERSION := Fedora 27
+else
+ $(error Unknown base OS $(BASE_OS))
+endif
+
##########################################################################################
# Define external dependencies
@@ -79,10 +89,7 @@ GMP := http://ftp.gnu.org/pub/gnu/gmp/${gmp_ver}.tar.bz2
MPC := http://ftp.gnu.org/pub/gnu/mpc/${mpc_ver}.tar.gz
GDB := http://ftp.gnu.org/gnu/gdb/${gdb_ver}.tar.xz
-OEL_URL := http://yum.oracle.com/repo/OracleLinux/OL6/4/base/$(ARCH)/
-
-# RPMs in OEL6.4
-LINUX_VERSION := OEL6.4
+# RPMs used by all BASE_OS
RPM_LIST := \
kernel-headers \
glibc glibc-headers glibc-devel \
@@ -180,10 +187,10 @@ ifeq ($(ARCH),x86_64)
RPM_ARCHS += i386 i686
endif
endif
-else ifeq ($(ARCH),i686))
- RPM_ARCHS := i386 i686
+else ifeq ($(ARCH),i686)
+ RPM_ARCHS := i386 i686 noarch
else
- RPM_ARCHS := $(ARCH)
+ RPM_ARCHS := $(ARCH) noarch
endif
RPM_FILE_LIST := $(sort $(foreach a, $(RPM_ARCHS), \
@@ -453,6 +460,12 @@ ifeq ($(HOST), $(TARGET))
@echo 'done'
$(gdb): $(gcc)
+else
+ $(BUILDDIR)/$(gdb_ver)/Makefile:
+ $(info Faking $@, not used when cross-compiling)
+ mkdir -p $(@D)
+ echo "install:" > $@
+ @echo 'done'
endif
##########################################################################################
@@ -531,7 +544,7 @@ $(PREFIX)/devkit.info: FRC
echo '' >> $@
echo 'DEVKIT_NAME="$(gcc_ver) - $(LINUX_VERSION)"' >> $@
echo 'DEVKIT_TOOLCHAIN_PATH="$$DEVKIT_ROOT/bin"' >> $@
- echo 'DEVKIT_SYSROOT="$$DEVKIT_ROOT/$$host/sysroot"' >> $@
+ echo 'DEVKIT_SYSROOT="$$DEVKIT_ROOT/$(TARGET)/sysroot"' >> $@
echo 'DEVKIT_EXTRA_PATH="$$DEVKIT_ROOT/bin"' >> $@
##########################################################################################
diff --git a/make/gensrc/Gensrc-java.desktop.gmk b/make/gensrc/Gensrc-java.desktop.gmk
index ae6cb3e9811..62197ad6b13 100644
--- a/make/gensrc/Gensrc-java.desktop.gmk
+++ b/make/gensrc/Gensrc-java.desktop.gmk
@@ -30,10 +30,10 @@ $(eval $(call IncludeCustomExtension, gensrc/Gensrc-java.desktop.gmk))
ifneq ($(OPENJDK_TARGET_OS), windows)
include GensrcIcons.gmk
+endif
- ifneq ($(OPENJDK_TARGET_OS), macosx)
- include GensrcX11Wrappers.gmk
- endif
+ifneq ($(filter $(OPENJDK_TARGET_OS), linux solaris aix), )
+ include GensrcX11Wrappers.gmk
endif
include GensrcSwing.gmk
diff --git a/make/gensrc/GensrcX11Wrappers.gmk b/make/gensrc/GensrcX11Wrappers.gmk
index ca95d0edae9..0d2bae6524d 100644
--- a/make/gensrc/GensrcX11Wrappers.gmk
+++ b/make/gensrc/GensrcX11Wrappers.gmk
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -23,106 +23,30 @@
# questions.
#
-# This file is responsible for extracting the x11 native struct offsets to
-# the xawt Java library. The tool needs to be run on the os/arch that
-# will host the final jvm, thus the tool cannot be used when cross compiling.
+# Generate java sources using the X11 offsets that are precalculated in files
+# make/data/x11wrappergen/sizes-.txt.
-# To enable cross compiling, the two versions of the generated offset file,
-# sizes.32 and sizes.64 are committed into the source code repository.
-# These are the ones used.
+GENSRC_X11WRAPPERS_OUTPUT_TOP := $(SUPPORT_OUTPUTDIR)/gensrc/java.desktop
-# However when not cross compiling, the offset generator tool is built and
-# run, to verify that it still generates the same sizes.32 and sizes.64.
+GENSRC_X11WRAPPERS_MARKER := $(GENSRC_X11WRAPPERS_OUTPUT_TOP)/_x11wrappers.marker
-GENSRC_X11WRAPPERS :=
-# Put temporary c-code and executable to calculate offsets here.
-# Also put verification offset file here as well.
-GENSRC_X11WRAPPERS_TMP := $(SUPPORT_OUTPUTDIR)/gensrc/java.desktop/_x11wrappers
# Put the generated Java classes used to interface X11 from awt here.
-GENSRC_X11WRAPPERS_DST := $(SUPPORT_OUTPUTDIR)/gensrc/java.desktop/sun/awt/X11
+GENSRC_X11WRAPPERS_OUTPUTDIR := $(GENSRC_X11WRAPPERS_OUTPUT_TOP)/sun/awt/X11
# The pre-calculated offset file are stored here:
-GENSRC_SIZER_DIR := $(TOPDIR)/make/data/x11wrappergen
+GENSRC_X11WRAPPERS_DATADIR := $(TOPDIR)/make/data/x11wrappergen
+GENSRC_X11WRAPPERS_DATA := $(GENSRC_X11WRAPPERS_DATADIR)/sizes-$(OPENJDK_TARGET_CPU_BITS).txt
-# Normal case is to generate only according to target bits
-GENSRC_X11_VERSION := $(OPENJDK_TARGET_CPU_BITS)
-ifeq ($(OPENJDK_TARGET_CPU_BITS), 64)
- ifneq ($(OPENJDK_TARGET_OS), linux)
- # On all 64-bit systems except Linux, generate both 32 and 64 bit versions
- GENSRC_X11_VERSION := 32 64
- endif
-else
- ifeq ($(OPENJDK_TARGET_OS), solaris)
- # As a special case, solaris 32-bit also generates the 64-bit version
- GENSRC_X11_VERSION := 32 64
- endif
-endif
-
-GENSRC_X11_SIZES_USED := $(addprefix $(GENSRC_X11WRAPPERS_TMP)/sizes., $(GENSRC_X11_VERSION))
-
-# Copy only the sizes.* files that are actually needed. WrapperGenerator picks up any it finds from the
-# file prefix it is given so those not needed need to be hidden.
-$(GENSRC_X11WRAPPERS_TMP)/sizes.%: $(GENSRC_SIZER_DIR)/sizes.%
- $(call MakeDir, $(@D))
- $(RM) '$@'
- $(SORT) $< > $@
-
-# Run the tool on the offset files copied from the source repository to generate several Java classes
-# used in awt.
-$(SUPPORT_OUTPUTDIR)/gensrc/java.desktop/_the.generated.x11: $(GENSRC_X11_SIZES_USED) $(BUILD_TOOLS_JDK)
- $(call MakeDir, $(GENSRC_X11WRAPPERS_DST))
- $(TOOL_WRAPPERGENERATOR) $(GENSRC_X11WRAPPERS_DST) $(GENSRC_SIZER_DIR)/xlibtypes.txt "gen" $(GENSRC_X11WRAPPERS_TMP)/sizes
+# Run the tool on the offset files to generate several Java classes used in awt.
+$(GENSRC_X11WRAPPERS_MARKER): $(BUILD_TOOLS_JDK) $(GENSRC_X11WRAPPERS_DATA) \
+ $(GENSRC_X11WRAPPERS_DATADIR)/xlibtypes.txt
+ $(call MakeDir, $(GENSRC_X11WRAPPERS_OUTPUTDIR))
+ $(call LogInfo, Generating X11 wrapper source files)
+ $(call ExecuteWithLog, $@, \
+ $(TOOL_WRAPPERGENERATOR) gen_java $(GENSRC_X11WRAPPERS_OUTPUTDIR) \
+ $(GENSRC_X11WRAPPERS_DATADIR)/xlibtypes.txt $(GENSRC_X11WRAPPERS_DATA) \
+ $(OPENJDK_TARGET_CPU_BITS))
$(TOUCH) $@
-GENSRC_X11WRAPPERS += $(SUPPORT_OUTPUTDIR)/gensrc/java.desktop/_the.generated.x11
-ifneq ($(COMPILE_TYPE), cross)
- # This is not a cross compile, regenerate the offset file, so that we
- # can compare it with the version in the source code repository.
-
- # Generate the C code for the program that will output the offset file.
- $(GENSRC_X11WRAPPERS_TMP)/sizer.%.c: $(GENSRC_SIZER_DIR)/xlibtypes.txt $(BUILD_TOOLS_JDK)
- $(call LogInfo, Generating X11 wrapper ($*-bit version))
- $(call MakeDir, $(@D))
- $(TOOL_WRAPPERGENERATOR) $(@D) $(GENSRC_SIZER_DIR)/xlibtypes.txt "sizer" $*
-
- # use -m32/-m64 only if the compiler supports it
- ifeq ($(COMPILER_SUPPORTS_TARGET_BITS_FLAG), true)
- MEMORY_MODEL_FLAG="$(COMPILER_TARGET_BITS_FLAG)$*"
- endif
-
- SIZER_CFLAGS := \
- -I$(TOPDIR)/src/hotspot/share/include \
- -I$(TOPDIR)/src/hotspot/os/$(HOTSPOT_TARGET_OS_TYPE)/include \
- -I$(SUPPORT_OUTPUTDIR)/modules_include/java.base \
- -I$(SUPPORT_OUTPUTDIR)/modules_include/java.base/$(OPENJDK_TARGET_OS_INCLUDE_SUBDIR) \
- -I$(TOPDIR)/src/java.base/share/native/libjava \
- -I$(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjava \
- -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \
- -I$(TOPDIR)/src/java.desktop/share/native/common/awt/debug \
- -I$(TOPDIR)/src/java.desktop/share/native/libawt/awt/image/cvutils \
- #
-
- # Compile the C code into an executable.
- $(GENSRC_X11WRAPPERS_TMP)/sizer.%.exe: $(GENSRC_X11WRAPPERS_TMP)/sizer.%.c
- $(call MakeDir, $(@D))
- (cd $(@D) && $(CC) $(MEMORY_MODEL_FLAG) -o $@ $< \
- $(X_CFLAGS) \
- $(X_LIBS) \
- $(SIZER_CFLAGS) -lc)
-
- .PRECIOUS: $(GENSRC_X11WRAPPERS_TMP)/sizer.%.exe $(GENSRC_X11WRAPPERS_TMP)/sizer.%.c
-
- # Run the executable create the offset file and check that it is identical
- # to the offset file in the source code repository.
- $(GENSRC_X11WRAPPERS_TMP)/sizes.%.verification: $(GENSRC_X11WRAPPERS_TMP)/sizer.%.exe
- $(call LogInfo, Verifying X11 wrapper sizes)
- $(call MakeDir, $(@D))
- $(GENSRC_X11WRAPPERS_TMP)/sizer.$*.exe | $(SORT) > $@.tmp
- $(DIFF) $(GENSRC_X11WRAPPERS_TMP)/sizes.$*.verification.tmp $(GENSRC_X11WRAPPERS_TMP)/sizes.$*
- mv $@.tmp $@
-
- GENSRC_X11WRAPPERS += $(GENSRC_X11WRAPPERS_TMP)/sizes.$(OPENJDK_TARGET_CPU_BITS).verification
-endif
-
-GENSRC_JAVA_DESKTOP += $(GENSRC_X11WRAPPERS)
+GENSRC_JAVA_DESKTOP += $(GENSRC_X11WRAPPERS_MARKER)
diff --git a/make/hotspot/gensrc/GensrcAdlc.gmk b/make/hotspot/gensrc/GensrcAdlc.gmk
index 1463d82884e..92b030b69da 100644
--- a/make/hotspot/gensrc/GensrcAdlc.gmk
+++ b/make/hotspot/gensrc/GensrcAdlc.gmk
@@ -52,7 +52,7 @@ ifeq ($(call check-jvm-feature, compiler2), true)
endif
# Set the C++ standard if supported
- ADLC_CFLAGS += $(CXXSTD_CXXFLAG)
+ ADLC_CFLAGS += $(ADLC_CXXFLAG)
# NOTE: The old build didn't set -DASSERT for windows but it doesn't seem to
# hurt.
diff --git a/make/hotspot/gensrc/GensrcDtrace.gmk b/make/hotspot/gensrc/GensrcDtrace.gmk
index 9df23a8cbe5..e8a5bdb3ef4 100644
--- a/make/hotspot/gensrc/GensrcDtrace.gmk
+++ b/make/hotspot/gensrc/GensrcDtrace.gmk
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -46,7 +46,7 @@ ifeq ($(call check-jvm-feature, dtrace), true)
$(call LogInfo, Generating dtrace header file $(@F))
$(call MakeDir, $(@D) $(DTRACE_SUPPORT_DIR))
$(call ExecuteWithLog, $(DTRACE_SUPPORT_DIR)/$(@F).d, \
- ( $(CC) -E $(DTRACE_CPP_FLAGS) $< > $(DTRACE_SUPPORT_DIR)/$(@F).d ) )
+ ($(CPP) $(DTRACE_CPP_FLAGS) $< > $(DTRACE_SUPPORT_DIR)/$(@F).d))
$(call ExecuteWithLog, $@, $(DTRACE) $(DTRACE_FLAGS) -h -o $@ -s $(DTRACE_SUPPORT_DIR)/$(@F).d)
# Process all .d files in DTRACE_SOURCE_DIR. They are:
diff --git a/make/hotspot/lib/CompileDtracePostJvm.gmk b/make/hotspot/lib/CompileDtracePostJvm.gmk
index efe4ffe8021..ad0b23ef9b9 100644
--- a/make/hotspot/lib/CompileDtracePostJvm.gmk
+++ b/make/hotspot/lib/CompileDtracePostJvm.gmk
@@ -49,13 +49,9 @@ ifeq ($(call check-jvm-feature, dtrace), true)
NAME := dtraceGenOffsets, \
TYPE := EXECUTABLE, \
SRC := $(TOPDIR)/make/hotspot/src/native/dtrace, \
- CC := $(BUILD_CXX), \
- CXX := $(BUILD_CXX), \
- LDEXE := $(BUILD_CXX), \
- generateJvmOffsets.cpp_CXXFLAGS := $(JVM_CFLAGS) -mt -xnolib -norunpath, \
- generateJvmOffsetsMain.c_CFLAGS := -mt -m64 -norunpath -z nodefs, \
+ TOOLCHAIN := $(TOOLCHAIN_BUILD), \
LDFLAGS := -m64, \
- LIBS := -lc, \
+ CFLAGS := -m64 $(JVM_CFLAGS), \
OBJECT_DIR := $(JVM_VARIANT_OUTPUTDIR)/tools/dtrace-gen-offsets/objs, \
OUTPUT_DIR := $(JVM_VARIANT_OUTPUTDIR)/tools/dtrace-gen-offsets, \
))
@@ -78,24 +74,11 @@ ifeq ($(call check-jvm-feature, dtrace), true)
JVM_OFFSETS_INDEX_H := $(DTRACE_SUPPORT_DIR)/JvmOffsetsIndex.h
# Run the dtrace-gen-offset tool to generate these three files.
+ # The generated JvmOffsets.cpp is compiled with the rest of libjvm.
$(eval $(call SetupDtraceOffsetsGeneration, $(JVM_OFFSETS_H), header))
$(eval $(call SetupDtraceOffsetsGeneration, $(JVM_OFFSETS_INDEX_H), index))
$(eval $(call SetupDtraceOffsetsGeneration, $(JVM_OFFSETS_CPP), table))
- ############################################################################
- # Compile JVM_OFFSETS_OBJ which is linked with libjvm.so.
-
- # JvmOffsets.cpp is compiled without the common JVM_CFLAGS. Otherwise, the
- # natural way would have been to included this source code in BUILD_LIBJVM.
- JVM_OFFSETS_CFLAGS := -m64
- ifeq ($(OPENJDK_TARGET_CPU), sparcv9)
- JVM_OFFSETS_CFLAGS += -xarch=sparc
- endif
-
- $(JVM_OFFSETS_OBJ): $(JVM_OFFSETS_CPP) $(JVM_OFFSETS_H)
- $(call LogInfo, Compiling dtrace file JvmOffsets.cpp (for libjvm.so))
- $(call ExecuteWithLog, $@, $(CXX) -c -I$( $(DTRACE_SUPPORT_DIR)/$(@F).d)
+ $(call ExecuteWithLog, $(DTRACE_SUPPORT_DIR)/$(@F).d, \
+ ($(CPP) $(DTRACE_CPP_FLAGS) $< > $(DTRACE_SUPPORT_DIR)/$(@F).d))
$(call ExecuteWithLog, $@, $(DTRACE) $(DTRACE_FLAGS) -xlazyload -o $@ \
-s $(DTRACE_SUPPORT_DIR)/$(@F).d $(sort $(DTRACE_INSTRUMENTED_OBJS)))
@@ -161,15 +144,25 @@ ifeq ($(call check-jvm-feature, dtrace), true)
# We work around this by fixing the types for these symbols using elfedit,
# after dtrace has generated the .o file.
JHELPER_DTRACE_SRC := $(TOPDIR)/src/hotspot/os/solaris/dtrace/jhelper.d
- DTRACE_EXTERNAL_SYMBOLS := $(shell $(GREP) ^extern $(JHELPER_DTRACE_SRC) | $(AWK) '{ gsub(";","") ; print $$3 }')
- DTRACE_ELFEDIT_COMMANDS := $(foreach symbol, $(DTRACE_EXTERNAL_SYMBOLS), \
- -e 'sym:st_type $(symbol) 1')
+ GetElfeditCommands = \
+ $(foreach symbol, \
+ $(shell $(GREP) ^extern $(JHELPER_DTRACE_SRC) | $(AWK) '{ gsub(";","") ; print $$3 }'), \
+ -e 'sym:st_type $(symbol) 1')
+
+ # Make sure we run our selected compiler for preprocessing instead of letting
+ # the dtrace tool pick it on it's own.
$(DTRACE_JHELPER_OBJ): $(JHELPER_DTRACE_SRC) $(JVM_OFFSETS_INDEX_H)
$(call LogInfo, Running dtrace for $( $(DTRACE_SUPPORT_DIR)/$(@F).d))
+ $(call ExecuteWithLog, $@, $(DTRACE) $(DTRACE_FLAGS) -o $@ \
+ -s $(DTRACE_SUPPORT_DIR)/$(@F).d)
+ ifeq ($(OPENJDK_TARGET_CPU_ARCH), sparc)
+ $(call ExecuteWithLog, $@.elfedit, $(ELFEDIT) $(call GetElfeditCommands) $@)
+ endif
############################################################################
# Build the stand-alone dtrace libraries
@@ -182,7 +175,7 @@ ifeq ($(call check-jvm-feature, dtrace), true)
SRC := $(TOPDIR)/src/java.base/solaris/native/libjvm_dtrace, \
CFLAGS := -m64 -G -mt -KPIC, \
LDFLAGS := -m64 -mt -xnolib $(SHARED_LIBRARY_FLAGS), \
- LIBS := $(LIBDL) -lc -lthread -ldoor, \
+ LIBS := $(LIBDL) -lthread -ldoor, \
MAPFILE := $(TOPDIR)/make/mapfiles/libjvm_dtrace/mapfile-vers, \
OBJECT_DIR := $(LIBJVM_DTRACE_OUTPUTDIR)/objs, \
))
@@ -198,7 +191,6 @@ ifeq ($(call check-jvm-feature, dtrace), true)
CFLAGS := -I$(JVM_VARIANT_OUTPUTDIR)/gensrc -I$(DTRACE_SUPPORT_DIR) \
-m64 -G -mt -KPIC, \
LDFLAGS := -m64 -mt -xnolib $(SHARED_LIBRARY_FLAGS), \
- LIBS := -lc, \
MAPFILE := $(TOPDIR)/make/mapfiles/libjvm_db/mapfile-vers, \
OBJECT_DIR := $(LIBJVM_DB_OUTPUTDIR)/objs, \
))
diff --git a/make/hotspot/lib/CompileDtracePreJvm.gmk b/make/hotspot/lib/CompileDtracePreJvm.gmk
index 20e3aa9be7d..66031394af8 100644
--- a/make/hotspot/lib/CompileDtracePreJvm.gmk
+++ b/make/hotspot/lib/CompileDtracePreJvm.gmk
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -29,8 +29,11 @@ ifeq ($(call check-jvm-feature, dtrace), true)
# CompileJvm.gmk
DTRACE_OBJ := $(JVM_OUTPUTDIR)/objs/dtrace.o
DTRACE_JHELPER_OBJ := $(JVM_OUTPUTDIR)/objs/dtrace_jhelper.o
- JVM_OFFSETS_OBJ := $(JVM_OUTPUTDIR)/objs/JvmOffsets.o
+ DTRACE_EXTRA_OBJECT_FILES := $(DTRACE_OBJ) $(DTRACE_JHELPER_OBJ)
- DTRACE_EXTRA_OBJECT_FILES := $(DTRACE_OBJ) $(DTRACE_JHELPER_OBJ) $(JVM_OFFSETS_OBJ)
+ # Since we cannot generate JvmOffsets.cpp as part of the gensrc step,
+ # we need this special hook to get it to compile with the rest of libjvm.
+ JVM_OFFSETS_CPP := $(DTRACE_SUPPORT_DIR)/JvmOffsets.cpp
+ DTRACE_EXTRA_SOURCE_FILES := $(JVM_OFFSETS_CPP)
endif
endif
diff --git a/make/hotspot/lib/CompileGtest.gmk b/make/hotspot/lib/CompileGtest.gmk
index c41b1099259..3f2f4b3c16f 100644
--- a/make/hotspot/lib/CompileGtest.gmk
+++ b/make/hotspot/lib/CompileGtest.gmk
@@ -81,8 +81,6 @@ $(eval $(call SetupNativeCompilation, BUILD_GTEST_LIBJVM, \
CFLAGS_solaris := -DGTEST_HAS_EXCEPTIONS=0 -library=stlport4, \
CFLAGS_macosx := -DGTEST_OS_MAC=1, \
CFLAGS_aix := -qpic=large, \
- CFLAGS_DEBUG_SYMBOLS := $(JVM_CFLAGS_SYMBOLS), \
- CXXFLAGS_DEBUG_SYMBOLS := $(JVM_CFLAGS_SYMBOLS), \
DISABLED_WARNINGS_gcc := undef, \
DISABLED_WARNINGS_clang := undef switch format-nonliteral \
tautological-undefined-compare $(BUILD_LIBJVM_DISABLED_WARNINGS_clang), \
@@ -115,8 +113,6 @@ $(eval $(call SetupNativeCompilation, BUILD_GTEST_LAUNCHER, \
OBJECT_DIR := $(JVM_OUTPUTDIR)/gtest/launcher-objs, \
CFLAGS := $(JVM_CFLAGS) -I$(GTEST_FRAMEWORK_SRC) \
-I$(GTEST_FRAMEWORK_SRC)/include, \
- CFLAGS_DEBUG_SYMBOLS := $(JVM_CFLAGS_SYMBOLS), \
- CXXFLAGS_DEBUG_SYMBOLS := $(JVM_CFLAGS_SYMBOLS), \
LDFLAGS := $(LDFLAGS_JDKEXE), \
LDFLAGS_unix := -L$(JVM_OUTPUTDIR)/gtest $(call SET_SHARED_LIBRARY_ORIGIN), \
LDFLAGS_solaris := -library=stlport4, \
diff --git a/make/hotspot/lib/CompileJvm.gmk b/make/hotspot/lib/CompileJvm.gmk
index a714eda627d..49d24a80700 100644
--- a/make/hotspot/lib/CompileJvm.gmk
+++ b/make/hotspot/lib/CompileJvm.gmk
@@ -214,13 +214,12 @@ $(eval $(call SetupNativeCompilation, BUILD_LIBJVM, \
TOOLCHAIN := TOOLCHAIN_LINK_CXX, \
OUTPUT_DIR := $(JVM_LIB_OUTPUTDIR), \
SRC := $(JVM_SRC_DIRS), \
+ EXTRA_FILES := $(DTRACE_EXTRA_SOURCE_FILES), \
EXCLUDES := $(JVM_EXCLUDES), \
EXCLUDE_FILES := $(JVM_EXCLUDE_FILES), \
EXCLUDE_PATTERNS := $(JVM_EXCLUDE_PATTERNS), \
EXTRA_OBJECT_FILES := $(DTRACE_EXTRA_OBJECT_FILES), \
CFLAGS := $(JVM_CFLAGS), \
- CFLAGS_DEBUG_SYMBOLS := $(JVM_CFLAGS_SYMBOLS), \
- CXXFLAGS_DEBUG_SYMBOLS := $(JVM_CFLAGS_SYMBOLS), \
vm_version.cpp_CXXFLAGS := $(CFLAGS_VM_VERSION), \
arguments.cpp_CXXFLAGS := $(CFLAGS_VM_VERSION), \
DISABLED_WARNINGS_clang := tautological-compare, \
@@ -244,10 +243,10 @@ $(eval $(call SetupNativeCompilation, BUILD_LIBJVM, \
ifeq ($(OPENJDK_TARGET_OS), windows)
# It doesn't matter which jvm.lib file gets exported, but we need
# to pick just one.
- ifeq ($(JVM_VARIANT), $(firstword $(JVM_VARIANTS)))
+ ifeq ($(JVM_VARIANT), $(JVM_VARIANT_MAIN))
$(eval $(call SetupCopyFiles, COPY_JVM_LIB, \
DEST := $(LIB_OUTPUTDIR), \
- FILES :=$(JVM_VARIANT_OUTPUTDIR)/libjvm/objs/jvm.lib, \
+ FILES :=$(BUILD_LIBJVM_IMPORT_LIBRARY), \
))
TARGETS += $(COPY_JVM_LIB)
endif
diff --git a/make/hotspot/lib/CompileLibjsig.gmk b/make/hotspot/lib/CompileLibjsig.gmk
index 0ad76ad6a90..1ac4091574e 100644
--- a/make/hotspot/lib/CompileLibjsig.gmk
+++ b/make/hotspot/lib/CompileLibjsig.gmk
@@ -36,7 +36,7 @@ ifneq ($(OPENJDK_TARGET_OS), windows)
ifeq ($(STATIC_BUILD), false)
ifeq ($(OPENJDK_TARGET_OS), linux)
LIBJSIG_CFLAGS := -fPIC -D_GNU_SOURCE -D_REENTRANT $(EXTRA_CFLAGS)
- LIBJSIG_LDFLAGS := $(LDFLAGS_HASH_STYLE) ${LDFLAGS_NO_EXEC_STACK} $(EXTRA_CFLAGS)
+ LIBJSIG_LDFLAGS := $(LIBJSIG_HASHSTYLE_LDFLAGS) ${LIBJSIG_NOEXECSTACK_LDFLAGS} $(EXTRA_CFLAGS)
LIBJSIG_LIBS := $(LIBDL)
# NOTE: The old build compiled this library without -soname.
@@ -76,7 +76,7 @@ ifneq ($(OPENJDK_TARGET_OS), windows)
else ifeq ($(OPENJDK_TARGET_OS), macosx)
LIBJSIG_CFLAGS := -m64 -D_GNU_SOURCE -pthread -mno-omit-leaf-frame-pointer -mstack-alignment=16 -fPIC
- LIBJSIG_LDFLAGS := $(LDFLAGS_HASH_STYLE)
+ LIBJSIG_LDFLAGS := $(LIBJSIG_HASHSTYLE_LDFLAGS)
else
$(error Unknown target OS $(OPENJDK_TARGET_OS) in CompileLibjsig.gmk)
endif
diff --git a/make/hotspot/src/native/dtrace/generateJvmOffsets.cpp b/make/hotspot/src/native/dtrace/generateJvmOffsets.cpp
index 7d23282b412..417286e9777 100644
--- a/make/hotspot/src/native/dtrace/generateJvmOffsets.cpp
+++ b/make/hotspot/src/native/dtrace/generateJvmOffsets.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -297,3 +297,30 @@ int generateJvmOffsets(GEN_variant gen_variant) {
fflush(stdout);
return 0;
}
+
+const char *HELP =
+ "HELP: generateJvmOffsets {-header | -index | -table} \n";
+
+int main(int argc, const char *argv[]) {
+ GEN_variant gen_var;
+
+ if (argc != 2) {
+ printf("%s", HELP);
+ return 1;
+ }
+
+ if (0 == strcmp(argv[1], "-header")) {
+ gen_var = GEN_OFFSET;
+ }
+ else if (0 == strcmp(argv[1], "-index")) {
+ gen_var = GEN_INDEX;
+ }
+ else if (0 == strcmp(argv[1], "-table")) {
+ gen_var = GEN_TABLE;
+ }
+ else {
+ printf("%s", HELP);
+ return 1;
+ }
+ return generateJvmOffsets(gen_var);
+}
diff --git a/make/jdk/src/classes/build/tools/jigsaw/GenGraphs.java b/make/jdk/src/classes/build/tools/jigsaw/GenGraphs.java
index a721ca19815..16cea17bbc8 100644
--- a/make/jdk/src/classes/build/tools/jigsaw/GenGraphs.java
+++ b/make/jdk/src/classes/build/tools/jigsaw/GenGraphs.java
@@ -142,6 +142,7 @@ public class GenGraphs {
ranks.add(Set.of("java.logging", "java.scripting", "java.xml"));
ranks.add(Set.of("java.sql"));
+ ranks.add(Set.of("java.transaction.xa"));
ranks.add(Set.of("java.compiler", "java.instrument"));
ranks.add(Set.of("java.desktop", "java.management"));
diff --git a/make/jdk/src/classes/build/tools/jigsaw/technology-summary.html b/make/jdk/src/classes/build/tools/jigsaw/technology-summary.html
index 3f581433245..90e603d7750 100644
--- a/make/jdk/src/classes/build/tools/jigsaw/technology-summary.html
+++ b/make/jdk/src/classes/build/tools/jigsaw/technology-summary.html
@@ -20,8 +20,8 @@ td.agg { background-color: lightgray; }
Java Runtime Environment version, which may be interpreted
* as a {@link Runtime.Version}
- *
java.version.date
+ *
{@code java.version.date}
*
Java Runtime Environment version date, in ISO-8601 YYYY-MM-DD
* format, which may be interpreted as a {@link
* java.time.LocalDate}
- *
java.vendor
+ *
{@code java.vendor}
*
Java Runtime Environment vendor
- *
java.vendor.url
+ *
{@code java.vendor.url}
*
Java vendor URL
- *
java.vendor.version
+ *
{@code java.vendor.version}
*
Java vendor version
- *
java.home
+ *
{@code java.home}
*
Java installation directory
- *
java.vm.specification.version
+ *
{@code java.vm.specification.version}
*
Java Virtual Machine specification version which may be
* interpreted as a {@link Runtime.Version}
- *
java.vm.specification.vendor
+ *
{@code java.vm.specification.vendor}
*
Java Virtual Machine specification vendor
- *
java.vm.specification.name
+ *
{@code java.vm.specification.name}
*
Java Virtual Machine specification name
- *
java.vm.version
+ *
{@code java.vm.version}
*
Java Virtual Machine implementation version which may be
* interpreted as a {@link Runtime.Version}
- *
java.vm.vendor
+ *
{@code java.vm.vendor}
*
Java Virtual Machine implementation vendor
- *
java.vm.name
+ *
{@code java.vm.name}
*
Java Virtual Machine implementation name
- *
java.specification.version
+ *
{@code java.specification.version}
*
Java Runtime Environment specification version which may be
* interpreted as a {@link Runtime.Version}
- *
java.specification.vendor
+ *
{@code java.specification.vendor}
*
Java Runtime Environment specification vendor
- *
java.specification.name
+ *
{@code java.specification.name}
*
Java Runtime Environment specification name
- *
java.class.version
+ *
{@code java.class.version}
*
Java class format version number
- *
java.class.path
+ *
{@code java.class.path}
*
Java class path (refer to
* {@link ClassLoader#getSystemClassLoader()} for details)
- *
java.library.path
+ *
{@code java.library.path}
*
List of paths to search when loading libraries
- *
java.io.tmpdir
+ *
{@code java.io.tmpdir}
*
Default temp file path
- *
java.compiler
+ *
{@code java.compiler}
*
Name of JIT compiler to use
- *
os.name
+ *
{@code os.name}
*
Operating system name
- *
os.arch
+ *
{@code os.arch}
*
Operating system architecture
- *
os.version
+ *
{@code os.version}
*
Operating system version
- *
file.separator
+ *
{@code file.separator}
*
File separator ("/" on UNIX)
- *
path.separator
+ *
{@code path.separator}
*
Path separator (":" on UNIX)
- *
line.separator
+ *
{@code line.separator}
*
Line separator ("\n" on UNIX)
- *
user.name
+ *
{@code user.name}
*
User's account name
- *
user.home
+ *
{@code user.home}
*
User's home directory
- *
user.dir
+ *
{@code user.dir}
*
User's current working directory
*
*
@@ -664,7 +663,7 @@ public final class System {
* separator character of the platform.
*
* Note that even if the security manager does not permit the
- * getProperties operation, it may choose to permit the
+ * {@code getProperties} operation, it may choose to permit the
* {@link #getProperty(String)} operation.
*
* @implNote In addition to the standard system properties, the system
@@ -688,9 +687,9 @@ public final class System {
*
*
* @return the system properties
- * @exception SecurityException if a security manager exists and its
- * checkPropertiesAccess method doesn't allow access
- * to the system properties.
+ * @throws SecurityException if a security manager exists and its
+ * {@code checkPropertiesAccess} method doesn't allow access
+ * to the system properties.
* @see #setProperties
* @see java.lang.SecurityException
* @see java.lang.SecurityManager#checkPropertiesAccess()
@@ -723,22 +722,21 @@ public final class System {
private static String lineSeparator;
/**
- * Sets the system properties to the Properties
- * argument.
- *
+ * Sets the system properties to the {@code Properties} argument.
+ *
* First, if there is a security manager, its
- * checkPropertiesAccess method is called with no
+ * {@code checkPropertiesAccess} method is called with no
* arguments. This may result in a security exception.
*
* The argument becomes the current set of system properties for use
* by the {@link #getProperty(String)} method. If the argument is
- * null, then the current set of system properties is
+ * {@code null}, then the current set of system properties is
* forgotten.
*
* @param props the new system properties.
- * @exception SecurityException if a security manager exists and its
- * checkPropertiesAccess method doesn't allow access
- * to the system properties.
+ * @throws SecurityException if a security manager exists and its
+ * {@code checkPropertiesAccess} method doesn't allow access
+ * to the system properties.
* @see #getProperties
* @see java.util.Properties
* @see java.lang.SecurityException
@@ -758,25 +756,24 @@ public final class System {
/**
* Gets the system property indicated by the specified key.
- *
+ *
* First, if there is a security manager, its
- * checkPropertyAccess method is called with the key as
+ * {@code checkPropertyAccess} method is called with the key as
* its argument. This may result in a SecurityException.
*
* If there is no current set of system properties, a set of system
* properties is first created and initialized in the same manner as
- * for the getProperties method.
+ * for the {@code getProperties} method.
*
* @param key the name of the system property.
* @return the string value of the system property,
- * or null if there is no property with that key.
+ * or {@code null} if there is no property with that key.
*
- * @exception SecurityException if a security manager exists and its
- * checkPropertyAccess method doesn't allow
- * access to the specified system property.
- * @exception NullPointerException if key is
- * null.
- * @exception IllegalArgumentException if key is empty.
+ * @throws SecurityException if a security manager exists and its
+ * {@code checkPropertyAccess} method doesn't allow
+ * access to the specified system property.
+ * @throws NullPointerException if {@code key} is {@code null}.
+ * @throws IllegalArgumentException if {@code key} is empty.
* @see #setProperty
* @see java.lang.SecurityException
* @see java.lang.SecurityManager#checkPropertyAccess(java.lang.String)
@@ -794,26 +791,25 @@ public final class System {
/**
* Gets the system property indicated by the specified key.
- *
+ *
* First, if there is a security manager, its
- * checkPropertyAccess method is called with the
- * key as its argument.
+ * {@code checkPropertyAccess} method is called with the
+ * {@code key} as its argument.
*
* If there is no current set of system properties, a set of system
* properties is first created and initialized in the same manner as
- * for the getProperties method.
+ * for the {@code getProperties} method.
*
* @param key the name of the system property.
* @param def a default value.
* @return the string value of the system property,
* or the default value if there is no property with that key.
*
- * @exception SecurityException if a security manager exists and its
- * checkPropertyAccess method doesn't allow
+ * @throws SecurityException if a security manager exists and its
+ * {@code checkPropertyAccess} method doesn't allow
* access to the specified system property.
- * @exception NullPointerException if key is
- * null.
- * @exception IllegalArgumentException if key is empty.
+ * @throws NullPointerException if {@code key} is {@code null}.
+ * @throws IllegalArgumentException if {@code key} is empty.
* @see #setProperty
* @see java.lang.SecurityManager#checkPropertyAccess(java.lang.String)
* @see java.lang.System#getProperties()
@@ -830,10 +826,10 @@ public final class System {
/**
* Sets the system property indicated by the specified key.
- *
+ *
* First, if a security manager exists, its
- * SecurityManager.checkPermission method
- * is called with a PropertyPermission(key, "write")
+ * {@code SecurityManager.checkPermission} method
+ * is called with a {@code PropertyPermission(key, "write")}
* permission. This may result in a SecurityException being thrown.
* If no exception is thrown, the specified property is set to the given
* value.
@@ -841,14 +837,14 @@ public final class System {
* @param key the name of the system property.
* @param value the value of the system property.
* @return the previous value of the system property,
- * or null if it did not have one.
+ * or {@code null} if it did not have one.
*
- * @exception SecurityException if a security manager exists and its
- * checkPermission method doesn't allow
+ * @throws SecurityException if a security manager exists and its
+ * {@code checkPermission} method doesn't allow
* setting of the specified property.
- * @exception NullPointerException if key or
- * value is null.
- * @exception IllegalArgumentException if key is empty.
+ * @throws NullPointerException if {@code key} or
+ * {@code value} is {@code null}.
+ * @throws IllegalArgumentException if {@code key} is empty.
* @see #getProperty
* @see java.lang.System#getProperty(java.lang.String)
* @see java.lang.System#getProperty(java.lang.String, java.lang.String)
@@ -869,23 +865,22 @@ public final class System {
/**
* Removes the system property indicated by the specified key.
- *
+ *
* First, if a security manager exists, its
- * SecurityManager.checkPermission method
- * is called with a PropertyPermission(key, "write")
+ * {@code SecurityManager.checkPermission} method
+ * is called with a {@code PropertyPermission(key, "write")}
* permission. This may result in a SecurityException being thrown.
* If no exception is thrown, the specified property is removed.
*
* @param key the name of the system property to be removed.
* @return the previous string value of the system property,
- * or null if there was no property with that key.
+ * or {@code null} if there was no property with that key.
*
- * @exception SecurityException if a security manager exists and its
- * checkPropertyAccess method doesn't allow
+ * @throws SecurityException if a security manager exists and its
+ * {@code checkPropertyAccess} method doesn't allow
* access to the specified system property.
- * @exception NullPointerException if key is
- * null.
- * @exception IllegalArgumentException if key is empty.
+ * @throws NullPointerException if {@code key} is {@code null}.
+ * @throws IllegalArgumentException if {@code key} is empty.
* @see #getProperty
* @see #setProperty
* @see java.util.Properties
@@ -920,10 +915,10 @@ public final class System {
*
If a security manager exists, its
* {@link SecurityManager#checkPermission checkPermission}
* method is called with a
- * {@link RuntimePermission}("getenv."+name)
+ * {@code {@link RuntimePermission}("getenv."+name)}
* permission. This may result in a {@link SecurityException}
* being thrown. If no exception is thrown the value of the
- * variable name is returned.
+ * variable {@code name} is returned.
*
*
System
* properties and environment variables are both
@@ -938,23 +933,23 @@ public final class System {
* unintended side effects. It is best to use system properties
* where possible. Environment variables should be used when a
* global effect is desired, or when an external system interface
- * requires an environment variable (such as PATH).
+ * requires an environment variable (such as {@code PATH}).
*
- *
On UNIX systems the alphabetic case of name is
+ *
On UNIX systems the alphabetic case of {@code name} is
* typically significant, while on Microsoft Windows systems it is
* typically not. For example, the expression
- * System.getenv("FOO").equals(System.getenv("foo"))
+ * {@code System.getenv("FOO").equals(System.getenv("foo"))}
* is likely to be true on Microsoft Windows.
*
* @param name the name of the environment variable
- * @return the string value of the variable, or null
+ * @return the string value of the variable, or {@code null}
* if the variable is not defined in the system environment
- * @throws NullPointerException if name is null
+ * @throws NullPointerException if {@code name} is {@code null}
* @throws SecurityException
* if a security manager exists and its
* {@link SecurityManager#checkPermission checkPermission}
* method doesn't allow access to the environment variable
- * name
+ * {@code name}
* @see #getenv()
* @see ProcessBuilder#environment()
*/
@@ -991,9 +986,8 @@ public final class System {
*
If a security manager exists, its
* {@link SecurityManager#checkPermission checkPermission}
* method is called with a
- * {@link RuntimePermission}("getenv.*")
- * permission. This may result in a {@link SecurityException} being
- * thrown.
+ * {@code {@link RuntimePermission}("getenv.*")} permission.
+ * This may result in a {@link SecurityException} being thrown.
*
*
When passing information to a Java subprocess,
* system properties
@@ -1021,7 +1015,7 @@ public final class System {
* {@code System.Logger} instances log messages that will be
* routed to the underlying logging framework the {@link System.LoggerFinder
* LoggerFinder} uses.
- *
+ *
* {@code System.Logger} instances are typically obtained from
* the {@link java.lang.System System} class, by calling
* {@link java.lang.System#getLogger(java.lang.String) System.getLogger(loggerName)}
@@ -1033,13 +1027,12 @@ public final class System {
* @see java.lang.System.LoggerFinder
*
* @since 9
- *
*/
public interface Logger {
/**
* System {@linkplain Logger loggers} levels.
- *
+ *
* A level has a {@linkplain #getName() name} and {@linkplain
* #getSeverity() severity}.
* Level values are {@link #ALL}, {@link #TRACE}, {@link #DEBUG},
@@ -1199,7 +1192,7 @@ public final class System {
/**
* Logs a lazily supplied message.
- *
+ *
* If the logger is currently enabled for the given log message level
* then a message is logged that is the result produced by the
* given supplier function. Otherwise, the supplier is not operated on.
@@ -1223,7 +1216,7 @@ public final class System {
/**
* Logs a message produced from the given object.
- *
+ *
* If the logger is currently enabled for the given log message level then
* a message is logged that, by default, is the result produced from
* calling toString on the given object.
@@ -1269,7 +1262,7 @@ public final class System {
/**
* Logs a lazily supplied message associated with a given throwable.
- *
+ *
* If the logger is currently enabled for the given log message level
* then a message is logged that is the result produced by the
* given supplier function. Otherwise, the supplier is not operated on.
@@ -1318,7 +1311,7 @@ public final class System {
/**
* Logs a localized message associated with a given throwable.
- *
+ *
* If the given resource bundle is non-{@code null}, the {@code msg}
* string is localized using the given resource bundle.
* Otherwise the {@code msg} string is not localized.
@@ -1339,7 +1332,7 @@ public final class System {
/**
* Logs a message with resource bundle and an optional list of
* parameters.
- *
+ *
* If the given resource bundle is non-{@code null}, the {@code format}
* string is localized using the given resource bundle.
* Otherwise the {@code format} string is not localized.
@@ -1357,14 +1350,12 @@ public final class System {
*/
public void log(Level level, ResourceBundle bundle, String format,
Object... params);
-
-
}
/**
* The {@code LoggerFinder} service is responsible for creating, managing,
* and configuring loggers to the underlying framework it uses.
- *
+ *
* A logger finder is a concrete implementation of this class that has a
* zero-argument constructor and implements the abstract methods defined
* by this class.
@@ -1516,9 +1507,9 @@ public final class System {
* take a {@link ResourceBundle} as parameter are redirected to one
* which does - passing the given {@code bundle} for
* localization. So for instance, a call to {@link
- * Logger#log(Level, String) Logger.log(Level.INFO, msg)}
+ * Logger#log(Logger.Level, String) Logger.log(Level.INFO, msg)}
* will end up as a call to {@link
- * Logger#log(Level, ResourceBundle, String, Object...)
+ * Logger#log(Logger.Level, ResourceBundle, String, Object...)
* Logger.log(Level.INFO, bundle, msg, (Object[])null)} on the wrapped
* logger instance.
* Note however that by default, string messages returned by {@link
@@ -1702,10 +1693,10 @@ public final class System {
* argument serves as a status code; by convention, a nonzero status
* code indicates abnormal termination.
*
- * This method calls the exit method in class
- * Runtime. This method never returns normally.
+ * This method calls the {@code exit} method in class
+ * {@code Runtime}. This method never returns normally.
*
- * The call System.exit(n) is effectively equivalent to
+ * The call {@code System.exit(n)} is effectively equivalent to
* the call:
*
* Runtime.getRuntime().exit(n)
@@ -1713,7 +1704,7 @@ public final class System {
*
* @param status exit status.
* @throws SecurityException
- * if a security manager exists and its checkExit
+ * if a security manager exists and its {@code checkExit}
* method doesn't allow exit with the specified status.
* @see java.lang.Runtime#exit(int)
*/
@@ -1723,15 +1714,15 @@ public final class System {
/**
* Runs the garbage collector.
- *
- * Calling the gc method suggests that the Java Virtual
+ *
+ * Calling the {@code gc} method suggests that the Java Virtual
* Machine expend effort toward recycling unused objects in order to
* make the memory they currently occupy available for quick reuse.
* When control returns from the method call, the Java Virtual
* Machine has made a best effort to reclaim space from all discarded
* objects.
*
- * The call System.gc() is effectively equivalent to the
+ * The call {@code System.gc()} is effectively equivalent to the
* call:
*
* Runtime.getRuntime().gc()
@@ -1745,15 +1736,15 @@ public final class System {
/**
* Runs the finalization methods of any objects pending finalization.
- *
+ *
* Calling this method suggests that the Java Virtual Machine expend
- * effort toward running the finalize methods of objects
- * that have been found to be discarded but whose finalize
+ * effort toward running the {@code finalize} methods of objects
+ * that have been found to be discarded but whose {@code finalize}
* methods have not yet been run. When control returns from the
* method call, the Java Virtual Machine has made a best effort to
* complete all outstanding finalizations.
*
- * The call System.runFinalization() is effectively
+ * The call {@code System.runFinalization()} is effectively
* equivalent to the call:
*
* Runtime.getRuntime().runFinalization()
@@ -1783,22 +1774,21 @@ public final class System {
* an implementation-dependent manner.
*
*
- * The call System.load(name) is effectively equivalent
+ * The call {@code System.load(name)} is effectively equivalent
* to the call:
*
* Runtime.getRuntime().load(name)
*
*
* @param filename the file to load.
- * @exception SecurityException if a security manager exists and its
- * checkLink method doesn't allow
+ * @throws SecurityException if a security manager exists and its
+ * {@code checkLink} method doesn't allow
* loading of the specified dynamic library
- * @exception UnsatisfiedLinkError if either the filename is not an
+ * @throws UnsatisfiedLinkError if either the filename is not an
* absolute path name, the native library is not statically
* linked with the VM, or the library cannot be mapped to
* a native library image by the host system.
- * @exception NullPointerException if filename is
- * null
+ * @throws NullPointerException if {@code filename} is {@code null}
* @see java.lang.Runtime#load(java.lang.String)
* @see java.lang.SecurityManager#checkLink(java.lang.String)
*/
@@ -1808,11 +1798,11 @@ public final class System {
}
/**
- * Loads the native library specified by the libname
- * argument. The libname argument must not contain any platform
+ * Loads the native library specified by the {@code libname}
+ * argument. The {@code libname} argument must not contain any platform
* specific prefix, file extension or path. If a native library
- * called libname is statically linked with the VM, then the
- * JNI_OnLoad_libname function exported by the library is invoked.
+ * called {@code libname} is statically linked with the VM, then the
+ * JNI_OnLoad_{@code libname} function exported by the library is invoked.
* See the JNI Specification
* for more details.
*
@@ -1820,22 +1810,21 @@ public final class System {
* location and mapped to a native library image in an implementation-
* dependent manner.
*
- * The call System.loadLibrary(name) is effectively
+ * The call {@code System.loadLibrary(name)} is effectively
* equivalent to the call
*
* Runtime.getRuntime().loadLibrary(name)
*
*
* @param libname the name of the library.
- * @exception SecurityException if a security manager exists and its
- * checkLink method doesn't allow
+ * @throws SecurityException if a security manager exists and its
+ * {@code checkLink} method doesn't allow
* loading of the specified dynamic library
- * @exception UnsatisfiedLinkError if either the libname argument
+ * @throws UnsatisfiedLinkError if either the libname argument
* contains a file path, the native library is not statically
* linked with the VM, or the library cannot be mapped to a
* native library image by the host system.
- * @exception NullPointerException if libname is
- * null
+ * @throws NullPointerException if {@code libname} is {@code null}
* @see java.lang.Runtime#loadLibrary(java.lang.String)
* @see java.lang.SecurityManager#checkLink(java.lang.String)
*/
@@ -1850,8 +1839,7 @@ public final class System {
*
* @param libname the name of the library.
* @return a platform-dependent native library name.
- * @exception NullPointerException if libname is
- * null
+ * @throws NullPointerException if {@code libname} is {@code null}
* @see java.lang.System#loadLibrary(java.lang.String)
* @see java.lang.ClassLoader#findLibrary(java.lang.String)
* @since 1.2
diff --git a/src/java.base/share/classes/java/lang/Thread.java b/src/java.base/share/classes/java/lang/Thread.java
index 638be53975d..91e1be220a4 100644
--- a/src/java.base/share/classes/java/lang/Thread.java
+++ b/src/java.base/share/classes/java/lang/Thread.java
@@ -50,30 +50,30 @@ import jdk.internal.HotSpotIntrinsicCandidate;
* Every thread has a priority. Threads with higher priority are
* executed in preference to threads with lower priority. Each thread
* may or may not also be marked as a daemon. When code running in
- * some thread creates a new Thread object, the new
+ * some thread creates a new {@code Thread} object, the new
* thread has its priority initially set equal to the priority of the
* creating thread, and is a daemon thread if and only if the
* creating thread is a daemon.
*
* When a Java Virtual Machine starts up, there is usually a single
* non-daemon thread (which typically calls the method named
- * main of some designated class). The Java Virtual
+ * {@code main} of some designated class). The Java Virtual
* Machine continues to execute threads until either of the following
* occurs:
*
- *
The exit method of class Runtime has been
+ *
The {@code exit} method of class {@code Runtime} has been
* called and the security manager has permitted the exit operation
* to take place.
*
All threads that are not daemon threads have died, either by
- * returning from the call to the run method or by
- * throwing an exception that propagates beyond the run
+ * returning from the call to the {@code run} method or by
+ * throwing an exception that propagates beyond the {@code run}
* method.
*
*
* There are two ways to create a new thread of execution. One is to
- * declare a class to be a subclass of Thread. This
- * subclass should override the run method of class
- * Thread. An instance of the subclass can then be
+ * declare a class to be a subclass of {@code Thread}. This
+ * subclass should override the {@code run} method of class
+ * {@code Thread}. An instance of the subclass can then be
* allocated and started. For example, a thread that computes primes
* larger than a stated value could be written as follows:
*
* The other way to create a thread is to declare a class that
- * implements the Runnable interface. That class then
- * implements the run method. An instance of the class can
+ * implements the {@code Runnable} interface. That class then
+ * implements the {@code run} method. An instance of the class can
* then be allocated, passed as an argument when creating
- * Thread, and started. The same example in this other
+ * {@code Thread}, and started. The same example in this other
* style looks like the following:
*
* class PrimeRun implements Runnable {
@@ -774,19 +774,18 @@ class Thread implements Runnable {
/**
* Causes this thread to begin execution; the Java Virtual Machine
- * calls the run method of this thread.
+ * calls the {@code run} method of this thread.
*
* The result is that two threads are running concurrently: the
* current thread (which returns from the call to the
- * start method) and the other thread (which executes its
- * run method).
+ * {@code start} method) and the other thread (which executes its
+ * {@code run} method).
*
* It is never legal to start a thread more than once.
* In particular, a thread may not be restarted once it has completed
* execution.
*
- * @exception IllegalThreadStateException if the thread was already
- * started.
+ * @throws IllegalThreadStateException if the thread was already started.
* @see #run()
* @see #stop()
*/
@@ -826,11 +825,11 @@ class Thread implements Runnable {
/**
* If this thread was constructed using a separate
- * Runnable run object, then that
- * Runnable object's run method is called;
+ * {@code Runnable} run object, then that
+ * {@code Runnable} object's {@code run} method is called;
* otherwise, this method does nothing and returns.
*
- * Subclasses of Thread should override this method.
+ * Subclasses of {@code Thread} should override this method.
*
* @see #start()
* @see #stop()
@@ -865,42 +864,42 @@ class Thread implements Runnable {
/**
* Forces the thread to stop executing.
*
- * If there is a security manager installed, its checkAccess
- * method is called with this
+ * If there is a security manager installed, its {@code checkAccess}
+ * method is called with {@code this}
* as its argument. This may result in a
- * SecurityException being raised (in the current thread).
+ * {@code SecurityException} being raised (in the current thread).
*
* If this thread is different from the current thread (that is, the current
* thread is trying to stop a thread other than itself), the
- * security manager's checkPermission method (with a
- * RuntimePermission("stopThread") argument) is called in
+ * security manager's {@code checkPermission} method (with a
+ * {@code RuntimePermission("stopThread")} argument) is called in
* addition.
* Again, this may result in throwing a
- * SecurityException (in the current thread).
+ * {@code SecurityException} (in the current thread).
*
* The thread represented by this thread is forced to stop whatever
* it is doing abnormally and to throw a newly created
- * ThreadDeath object as an exception.
+ * {@code ThreadDeath} object as an exception.
*
* It is permitted to stop a thread that has not yet been started.
* If the thread is eventually started, it immediately terminates.
*
* An application should not normally try to catch
- * ThreadDeath unless it must do some extraordinary
+ * {@code ThreadDeath} unless it must do some extraordinary
* cleanup operation (note that the throwing of
- * ThreadDeath causes finally clauses of
- * try statements to be executed before the thread
- * officially dies). If a catch clause catches a
- * ThreadDeath object, it is important to rethrow the
+ * {@code ThreadDeath} causes {@code finally} clauses of
+ * {@code try} statements to be executed before the thread
+ * officially dies). If a {@code catch} clause catches a
+ * {@code ThreadDeath} object, it is important to rethrow the
* object so that the thread actually dies.
*