8000839: Integrate the Java Access Bridge with Java Runtime
Reviewed-by: ptbrunet, erikj
diff --git a/makefiles/CompileJavaClasses.gmk b/makefiles/CompileJavaClasses.gmk
index 2a7f4de..5557c02 100644
--- a/makefiles/CompileJavaClasses.gmk
+++ b/makefiles/CompileJavaClasses.gmk
@@ -60,6 +60,12 @@
       # This gets built on unix platforms implicitly in the old build even though
       # it's excluded in the closed build.
       EXCLUDES+=sun/java2d/pisces
+
+      # AccessBridge is compiled separately below.
+      EXFILES += AccessBridge.java \
+		 com/sun/java/accessibility/util/java/awt/ChoiceTranslator.java
+      # This seems to never be built
+      EXCLUDES += com/sun/java/accessibility/extensions
    endif
 
 endif
@@ -121,7 +127,6 @@
 	     sun/nio/fs/LinuxFileStore.java \
 	     sun/nio/fs/LinuxFileSystem.java \
 	     sun/nio/fs/LinuxFileSystemProvider.java \
-	     sun/nio/fs/MagicFileTypeDetector.java \
 	     sun/nio/fs/LinuxNativeDispatcher.java \
 	     sun/nio/fs/LinuxUserDefinedFileAttributeView.java \
 	     sun/nio/fs/LinuxWatchService.java
@@ -221,10 +226,24 @@
 EXFILES+=-linux-arm.java \
 	 -linux-ppc.java
 
+# TODO: Is this necessary?
 ifeq ($(OPENJDK_TARGET_OS), windows)
     EXFILES+=sun/nio/ch/AbstractPollSelectorImpl.java \
+	sun/nio/ch/DevPollArrayWrapper.java \
+	sun/nio/ch/DevPollSelectorImpl.java \
+        sun/nio/ch/DevPollSelectorProvider.java \
+	sun/nio/ch/InheritedChannel.java \
         sun/nio/ch/PollSelectorProvider.java \
-	sun/nio/ch/SimpleAsynchronousFileChannelImpl.java
+        sun/nio/ch/PollSelectorImpl.java \
+	sun/nio/ch/Port.java \
+	sun/nio/ch/SimpleAsynchronousFileChannelImpl.java \
+	sun/nio/ch/SolarisAsynchronousChannelProvider.java \
+	sun/nio/ch/SolarisEventPort.java \
+	sun/nio/ch/UnixAsynchronousServerSocketChannelImpl.java \
+	sun/nio/ch/UnixAsynchronousSocketChannelImpl.java
+    EXFILES+=sun/net/sdp/SdpProvider.java
+else
+    EXFILES+=sun/net/www/protocol/http/ntlm/NTLMAuthSequence.java
 endif
 
 # Exclude nimbus files from rt.jar
@@ -241,10 +260,8 @@
 # Now we have COPY_PATTERNS, COPY_FILES and COPY_EXTRA
 
 ifndef OPENJDK
-    CLOSED_SRC_DIRS:=$(JDK_TOPDIR)/src/closed/share/classes
-    ifneq ($(OPENJDK_TARGET_OS_API_DIR),windows)
-      CLOSED_SRC_DIRS += $(JDK_TOPDIR)/src/closed/$(OPENJDK_TARGET_OS_API_DIR)/classes
-    endif
+    CLOSED_SRC_DIRS:=$(JDK_TOPDIR)/src/closed/share/classes \
+		     $(JDK_TOPDIR)/src/closed/$(OPENJDK_TARGET_OS_API_DIR)/classes
 endif
 
 MACOSX_SRC_DIRS :=
@@ -325,14 +342,29 @@
 
 ##########################################################################################
 
+#
+# This is an empty jar (only contains manifest) and fits poorly into framework...
+#   create simple rule instead
+#
+MANAGEMENT_AGENT_JAR_DEPS := $(JDK_TOPDIR)/src/share/classes/sun/management/manifest
+
+$(JDK_OUTPUTDIR)/lib/management-agent.jar : $(JDK_TOPDIR)/src/share/classes/sun/management/manifest
+	$(JAR) cfm $@ $(JDK_TOPDIR)/src/share/classes/sun/management/manifest
+
+JARS += $(JDK_OUTPUTDIR)/lib/management-agent.jar
+
+##########################################################################################
+
 ifndef OPENJDK
 
-    $(eval $(call SetupJavaCompilation,BUILD_ALTCLASSES,\
+$(eval $(call SetupJavaCompilation,BUILD_ALTCLASSES_JAR,\
 		SETUP:=GENERATE_JDKBYTECODE,\
 		SRC:=$(JDK_TOPDIR)/src/closed/share/altclasses, \
-		BIN:=$(JDK_OUTPUTDIR)/altclasses_classes))
+		BIN:=$(JDK_OUTPUTDIR)/altclasses_classes,\
+		JAR:=$(JDK_OUTPUTDIR)/lib/alt-rt.jar))
 
-    $(BUILD_ALTCLASSES): $(BUILD_JDK)
+$(BUILD_ALTCLASSES_JAR): $(BUILD_JDK)
+JARS += $(JDK_OUTPUTDIR)/lib/alt-rt.jar
 
 endif
 
@@ -355,7 +387,7 @@
      SERVER_DIR:=$(SJAVAC_SERVER_DIR),\
      SERVER_JVM:=$(SJAVAC_SERVER_JAVA)))
 
-$(eval $(call SetupJavaCompilation,BUILD_JOBJC,\
+$(eval $(call SetupJavaCompilation,BUILD_JOBJC_JAR,\
 		SETUP:=GENERATE_15BYTECODE,\
 		DISABLE_SJAVAC:=true,\
 		SRC:=$(JDK_TOPDIR)/src/macosx/native/jobjc/src/core/java \
@@ -367,9 +399,11 @@
 		JAR:=$(JDK_OUTPUTDIR)/lib/JObjC.jar, \
 		JARINDEX := true))
 
-$(BUILD_JOBJC) : $(BUILD_JDK)
+$(BUILD_JOBJC_JAR) : $(BUILD_JDK)
 
-$(eval $(call SetupJavaCompilation,BUILD_JOBJC_HEADERS,\
+JARS += $(JDK_OUTPUTDIR)/lib/JObjC.jar
+
+$(eval $(call SetupJavaCompilation,BUILD_JOBJC_HEADERS_JAR,\
 		SETUP:=GENERATE_JDKBYTECODE,\
 		SRC:=$(JDK_TOPDIR)/src/macosx/native/jobjc/src/core/java \
 		     $(JDK_TOPDIR)/src/macosx/native/jobjc/src/runtime-additions/java \
@@ -379,15 +413,53 @@
 		BIN:=$(JDK_OUTPUTDIR)/jobjc_classes_headers,\
 		HEADERS:=$(JDK_OUTPUTDIR)/gensrc_headers_jobjc))
 
-$(BUILD_JOBJC_HEADERS) : $(BUILD_JDK)
+$(BUILD_JOBJC_HEADERS_JAR) : $(BUILD_JDK)
+
+JARS += $(BUILD_JOBJC_HEADERS_JAR)
 
 endif
 
 ##########################################################################################
 
+ifndef OPENJDK
+ifeq ($(OPENJDK_TARGET_OS), windows)
+ifeq ($(OPENJDK_TARGET_CPU_BITS), 32)
+    $(eval $(call SetupJavaCompilation,BUILD_ACCESSBRIDGE_32,\
+		SETUP:=GENERATE_JDKBYTECODE,\
+		JAVAC_FLAGS:=-cp $(JDK_OUTPUTDIR)/classes,\
+		SRC:=$(JDK_OUTPUTDIR)/gensrc_ab/32bit,\
+		BIN:=$(JDK_OUTPUTDIR)/classes_ab/32bit))
+
+    $(BUILD_ACCESSBRIDGE_32): $(BUILD_JDK)
+
+    $(eval $(call SetupJavaCompilation,BUILD_ACCESSBRIDGE_LEGACY,\
+		SETUP:=GENERATE_JDKBYTECODE,\
+		JAVAC_FLAGS:=-cp $(JDK_OUTPUTDIR)/classes,\
+		SRC:=$(JDK_OUTPUTDIR)/gensrc_ab/legacy,\
+		BIN:=$(JDK_OUTPUTDIR)/classes_ab/legacy))
+
+    $(BUILD_ACCESSBRIDGE_LEGACY): $(BUILD_JDK)
+
+else
+
+    $(eval $(call SetupJavaCompilation,BUILD_ACCESSBRIDGE_64,\
+		SETUP:=GENERATE_JDKBYTECODE,\
+		JAVAC_FLAGS:=-cp $(JDK_OUTPUTDIR)/classes,\
+		SRC:=$(JDK_OUTPUTDIR)/gensrc_ab/64bit,\
+		BIN:=$(JDK_OUTPUTDIR)/classes_ab/64bit))
+
+    $(BUILD_ACCESSBRIDGE_64): $(BUILD_JDK)
+
+endif
+endif
+endif
+
+##########################################################################################
+
 # copy with -a to preserve timestamps so dependencies down the line aren't messed up
-all: $(BUILD_JDK) $(BUILD_ALTCLASSES) $(BUILD_JOBJC) $(BUILD_JOBJC_HEADERS) $(COPY_EXTRA) \
-	$(JDK_OUTPUTDIR)/classes/META-INF/services/com.sun.tools.xjc.Plugin \
-	$(JDK_OUTPUTDIR)/gensrc_headers/_the.jdk.base.headers
+all: $(BUILD_JDK) $(JARS) $(COPY_EXTRA) $(JDK_OUTPUTDIR)/classes/META-INF/services/com.sun.tools.xjc.Plugin \
+	$(JDK_OUTPUTDIR)/gensrc_headers/_the.jdk.base.headers \
+	$(BUILD_ACCESSBRIDGE_32) $(BUILD_ACCESSBRIDGE_64) \
+	$(BUILD_ACCESSBRIDGE_LEGACY)
 
 .PHONY: all