@@ -93,18 +93,29 @@ AC_DEFUN([OPAL_SETUP_JAVA],[
9393        #  hard-code a few of the common ones so that users don't have to
9494        #  specify --with-java-<foo>=LONG_ANNOYING_DIRECTORY.
9595        AS_IF([test -z  " $with_jdk_bindir "  ],
96-               [ #  OS X Snow Leopard and Lion (10.6 and 10.7 -- did not
97-                 #  check prior versions)
96+               [ #  OS X/macOS
9897               opal_java_found= 0
98+                #  The following logic was deliberately decided upon in https://github.com/open-mpi/ompi/pull/5015 specifically to prevent this script and the
99+                #  rest of Open MPI's build system from getting confused by the somewhat unorthodox Java toolchain layout present on OS X/macOS systems, described
100+                #  in depth by https://github.com/open-mpi/ompi/pull/5015#issuecomment-379324639, and mishandling OS X/macOS Java toolchain path
101+                #  detection as a result.
99102               AS_IF([test -x  /usr/libexec/java_home],
100-                     [opal_java_dir= ` /usr/libexec/java_home` /include ],
101-                     [opal_java_dir= /System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers ])
102-                AC_MSG_CHECKING([OSX  locations])
103+                       [opal_java_dir= ` /usr/libexec/java_home`  ],
104+                       [opal_java_dir= /System/Library/Frameworks/JavaVM.framework/Versions/Current])
105+                AC_MSG_CHECKING([OS X/macOS  locations])
103106               AS_IF([test -d  $opal_java_dir ],
104107                     [AC_MSG_RESULT([found ($opal_java_dir )])
105108                      opal_java_found= 1
106-                       with_jdk_headers= $opal_java_dir 
107-                       with_jdk_bindir= /usr/bin],
109+                       if  test  -d " $opal_java_dir /Headers"   &&  test  -d " $opal_java_dir /Commands" ;  then 
110+                           with_jdk_headers=$opal_java_dir /Headers
111+                           with_jdk_bindir=$opal_java_dir /Commands
112+                       elif  test  -d " $opal_java_dir /include"   &&  test  -d " $opal_java_dir /bin" ;  then 
113+                           with_jdk_headers=$opal_java_dir /include
114+                           with_jdk_bindir=$opal_java_dir /bin
115+                       else 
116+                           AC_MSG_WARN([No recognized directory structure found under $opal_java_dir ])
117+                           AC_MSG_ERROR([Cannot continue])
118+                       fi],
108119                     [AC_MSG_RESULT([not found])])
109120
110121               if  test  " $opal_java_found "   = " 0" ;  then 
0 commit comments