# HG changeset patch
# User weijun
# Date 1363602884 -28800
# Node ID 6aa5464adeebfe1b908a95d3ce00d3650542c42c
# Parent  b50e2d36a05bd34d36420c8e446ce4b09c8bfdcd
8010192: Enable native JGSS provider on Mac

diff --git a/make/sun/security/Makefile b/make/sun/security/Makefile
--- a/make/sun/security/Makefile
+++ b/make/sun/security/Makefile
@@ -38,12 +38,10 @@
 SUBDIRS_MAKEFLAGS += JAVAC_WARNINGS_FATAL=true
 include $(BUILDDIR)/common/Defs.gmk
 
-# build sun/security/jgss/wrapper on non-windows non-macosx platforms
+# build sun/security/jgss/wrapper on non-windows platforms
 JGSS_WRAPPER =
 ifneq ($(PLATFORM), windows)
-    ifneq ($(PLATFORM), macosx)
-    	JGSS_WRAPPER = jgss/wrapper
-    endif
+  JGSS_WRAPPER = jgss/wrapper
 endif
 
 # Build PKCS#11 on all platforms
diff --git a/makefiles/CompileNativeLibraries.gmk b/makefiles/CompileNativeLibraries.gmk
--- a/makefiles/CompileNativeLibraries.gmk
+++ b/makefiles/CompileNativeLibraries.gmk
@@ -2543,7 +2543,6 @@
 ##########################################################################################
 
 ifneq ($(OPENJDK_TARGET_OS), windows)
-ifneq ($(OPENJDK_TARGET_OS), macosx)
 $(eval $(call SetupNativeCompilation,BUILD_LIBJ2GSS,\
 		LIBRARY:=j2gss,\
                 OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\
@@ -2563,7 +2562,6 @@
 
 BUILD_LIBRARIES += $(BUILD_LIBJ2GSS)
 endif
-endif
 
 ##########################################################################################
 
diff --git a/src/share/classes/sun/security/jgss/GSSManagerImpl.java b/src/share/classes/sun/security/jgss/GSSManagerImpl.java
--- a/src/share/classes/sun/security/jgss/GSSManagerImpl.java
+++ b/src/share/classes/sun/security/jgss/GSSManagerImpl.java
@@ -48,6 +48,7 @@
                     public Boolean run() {
                             String osname = System.getProperty("os.name");
                             if (osname.startsWith("SunOS") ||
+                                osname.contains("OS X") ||
                                 osname.startsWith("Linux")) {
                                 return new Boolean(System.getProperty
                                     (USE_NATIVE_PROP));
diff --git a/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java b/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java
--- a/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java
+++ b/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java
@@ -90,6 +90,11 @@
                                     "libgssapi_krb5.so",
                                     "libgssapi_krb5.so.2",
                                 };
+                            } else if (osname.contains("OS X")) {
+                                gssLibs = new String[]{
+                                    "libgssapi_krb5.dylib",
+                                    "/usr/lib/sasl2/libgssapiv2.2.so",
+                               };
                             }
                         } else {
                             gssLibs = new String[]{ defaultLib };
diff --git a/src/share/native/sun/security/jgss/wrapper/gssapi.h b/src/share/native/sun/security/jgss/wrapper/gssapi.h
--- a/src/share/native/sun/security/jgss/wrapper/gssapi.h
+++ b/src/share/native/sun/security/jgss/wrapper/gssapi.h
@@ -32,10 +32,21 @@
 #ifndef _GSSAPI_H_
 #define _GSSAPI_H_
 
+#if defined(__MACH__) && defined(__APPLE__)
+#       include <TargetConditionals.h>
+#       if TARGET_RT_MAC_CFM
+#               error "Use KfM 4.0 SDK headers for CFM compilation."
+#       endif
+#endif
+
 #ifdef __cplusplus
 extern "C" {
 #endif /* __cplusplus */
 
+#if TARGET_OS_MAC
+#    pragma pack(push,2)
+#endif
+
 /*
  * First, include stddef.h to get size_t defined.
  */
@@ -671,6 +682,10 @@
         gss_name_t *            /* output_name */
 );
 
+#if TARGET_OS_MAC
+#    pragma pack(pop)
+#endif
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/test/sun/security/krb5/runNameEquals.sh b/test/sun/security/krb5/runNameEquals.sh
--- a/test/sun/security/krb5/runNameEquals.sh
+++ b/test/sun/security/krb5/runNameEquals.sh
@@ -52,15 +52,11 @@
 # set platform-dependent variables
 OS=`uname -s`
 case "$OS" in
-  SunOS | Linux )
+  SunOS | Linux | Darwin )
     PATHSEP=":"
     FILESEP="/"
     NATIVE=true
     ;;
-  Darwin )
-    PATHSEP=":"
-    FILESEP="/"
-    ;;
   CYGWIN* )
     PATHSEP=";"
     FILESEP="/"