blob: c3c811729ca9aa50b845540cf6102cd9bde4ed67 [file] [log] [blame]
/* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "jsvc.h"
/* Locations of various JVM files. We have to deal with all this madness since
* we're not distributed together (yet!) with an official VM distribution. All
* this CRAP needs improvement, and based on the observation of default
* distributions of VMs and OSes. If it doesn't work for you, please report
* your VM layout (ls -laR) and system details (build/config.guess) so that we
* can improve the search algorithms.
*/
/* If JAVA_HOME is not defined we search this list of paths (OS-dependent)
* to find the default location of the JVM.
*/
char *location_home[] = {
#if defined(OS_DARWIN)
"/System/Library/Frameworks/JavaVM.framework/Home",
"/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/",
#elif defined(OS_LINUX) || defined(OS_SOLARIS) || defined(OS_BSD) || defined(OS_AIX)
"/usr/java/default",
"/usr/java",
"/usr/local/java",
"/usr/lib/jvm/default-java",
"/usr/lib/jvm/java",
"/etc/alternatives/java_sdk",
"/etc/alternatives/java_sdk_openjdk",
"/etc/alternatives/jre",
#if defined(__LP64__)
"/lib64/jvm/java",
"/lib64/jvm/java-openjdk",
#endif
"/lib/jvm/java",
"/lib/jvm/java-openjdk",
#elif defined(OS_CYGWIN)
"/cygdrive/c/WINNT/system32/java",
#elif defined(OS_SYSV)
"/opt/java",
"/opt/java/jdk13",
#elif defined(OS_TRU64)
"/usr/opt/java142",
"/usr/opt/java13",
#elif defined(OS_HPUX)
"/opt/java6",
"/opt/java1.5",
"/opt/java1.4",
"/opt/java1.3",
#endif
NULL,
};
/* The jvm.cfg file defines the VMs available for invocation. So far, on all
* all systems I've seen it's in $JAVA_HOME/lib. If this file is not found,
* then the "default" VMs (from location_jvm_default) is searched, otherwise,
* we're going to look thru the "configured" VMs (from lod_cfgvm) lying
* somewhere around JAVA_HOME. (Only two, I'm happy)
*/
char *location_jvm_cfg[] = {
"$JAVA_HOME/jre/lib/jvm.cfg", /* JDK */
"$JAVA_HOME/lib/jvm.cfg", /* JRE */
"$JAVA_HOME/jre/lib/" CPU "/jvm.cfg", /* JDK */
"$JAVA_HOME/lib/" CPU "/jvm.cfg", /* JRE */
#if defined(OS_AIX)
"$JAVA_HOME/jre/lib/ppc/jvm.cfg", /* JDK */
"$JAVA_HOME/lib/ppc/jvm.cfg", /* JRE */
#endif
NULL,
};
/* This is the list of "defaults" VM (searched when jvm.cfg is not found, as
* in the case of most JDKs 1.2.2
*/
char *location_jvm_default[] = {
#if defined(OS_DARWIN)
"$JAVA_HOME/../Libraries/libjvm.dylib",
"$JAVA_HOME/jre/lib/server/libjvm.dylib",
"$JAVA_HOME/jre/lib/client/libjvm.dylib",
#elif defined(OS_CYGWIN)
"$JAVA_HOME/jre/bin/classic/jvm.dll", /* Sun JDK 1.3 */
"$JAVA_HOME/jre/bin/client/jvm.dll", /* Sun JDK 1.4 */
#elif defined(OS_LINUX) || defined(OS_SOLARIS) || defined(OS_BSD) || defined(OS_SYSV) || defined(OS_FREEBSD) || defined(OS_TRU64) || defined(OS_AIX)
"$JAVA_HOME/jre/lib/" CPU "/classic/libjvm.so", /* Sun JDK 1.2 */
"$JAVA_HOME/jre/lib/" CPU "/server/libjvm.so", /* Sun JDK 1.4 */
"$JAVA_HOME/jre/lib/" CPU "/client/libjvm.so", /* Sun JDK 1.3 */
"$JAVA_HOME/jre/lib/" CPU "/libjvm.so", /* Sun JDK */
"$JAVA_HOME/lib/" CPU "/classic/libjvm.so", /* Sun JRE 1.2 */
"$JAVA_HOME/lib/" CPU "/server/libjvm.so", /* Sun JRE 1.4 */
"$JAVA_HOME/lib/" CPU "/client/libjvm.so", /* Sun JRE 1.3 */
"$JAVA_HOME/lib/" CPU "/libjvm.so", /* Sun JRE */
"$JAVA_HOME/jre/bin/" CPU "/classic/libjvm.so", /* IBM JDK 1.3 */
"$JAVA_HOME/jre/bin/" CPU "/libjvm.so", /* IBM JDK */
"$JAVA_HOME/bin/" CPU "/classic/libjvm.so", /* IBM JRE 1.3 */
"$JAVA_HOME/bin/" CPU "/libjvm.so", /* IBM JRE */
/* Those are "weirdos: if we got here, we're probably in troubles and
* we're not going to find anything, but hope never dies...
*/
"$JAVA_HOME/jre/lib/" CPU "/classic/green_threads/libjvm.so",
#if defined(OSD_POSIX)
"$JAVA_HOME/lib/s390/client/green_threads/libjvm.so",
"$JAVA_HOME/lib/sparc/client/green_threads/libjvm.so",
#endif
"$JAVA_HOME/jre/lib/classic/libjvm.so",
"$JAVA_HOME/jre/lib/client/libjvm.so",
"$JAVA_HOME/jre/lib/libjvm.so",
"$JAVA_HOME/lib/classic/libjvm.so",
"$JAVA_HOME/lib/server/libjvm.so",
"$JAVA_HOME/lib/client/libjvm.so",
"$JAVA_HOME/lib/libjvm.so",
"$JAVA_HOME/jre/bin/classic/libjvm.so",
"$JAVA_HOME/jre/bin/client/libjvm.so",
"$JAVA_HOME/jre/bin/libjvm.so",
"$JAVA_HOME/bin/classic/libjvm.so",
"$JAVA_HOME/bin/client/libjvm.so",
"$JAVA_HOME/bin/libjvm.so",
"$JAVA_HOME/jre/lib/" CPU "/fast64/libjvm.so",
"$JAVA_HOME/jre/lib/" CPU "/fast32/libjvm.so",
"$JAVA_HOME/lib/" CPU "/fast64/libjvm.so",
"$JAVA_HOME/lib/" CPU "/fast32/libjvm.so",
#elif defined(OS_HPUX)
"$JAVA_HOME/jre/lib/" CPU "/server/libjvm." SO_EXT,
"$JAVA_HOME/jre/lib/" CPU "/client/libjvm." SO_EXT,
"$JAVA_HOME/jre/lib/" CPU "/hotspot/libjvm." SO_EXT,
"$JAVA_HOME/jre/lib/" CPU "/classic/libjvm." SO_EXT,
#endif
"/usr/lib/libgcj.so.7", /* gcc java libraries */
"/usr/lib/libgcj.so.6",
NULL,
};
/* This is the list of "configured" VM (searched when jvm.cfg is found, as
* in the case of most JDKs 1.3 (not IBM, for example), way easier than
* before, and lovely, indeed...
*/
char *location_jvm_configured[] = {
#if defined(OS_DARWIN)
"$JAVA_HOME/lib/$VM_NAME/libjvm.dylib", /* Java 9 */
"$JAVA_HOME/jre/lib/$VM_NAME/libjvm.dylib",
"$JAVA_HOME/../Libraries/lib$VM_NAME.dylib",
#elif defined(OS_CYGWIN)
"$JAVA_HOME/jre/bin/$VM_NAME/jvm.dll", /* Sun JDK 1.3 */
#elif defined(OS_LINUX) || defined(OS_SOLARIS) || defined(OS_BSD) || defined(OS_FREEBSD) || defined(OS_TRU64) || defined(OS_AIX)
"$JAVA_HOME/lib/$VM_NAME/libjvm.so", /* Java 9 */
"$JAVA_HOME/jre/lib/" CPU "/$VM_NAME/libjvm.so", /* Sun JDK 1.3 */
"$JAVA_HOME/lib/" CPU "/$VM_NAME/libjvm.so", /* Sun JRE 1.3 */
#if defined(OS_AIX)
"$JAVA_HOME/jre/lib/ppc/$VM_NAME/libjvm.so", /* Sun JDK 1.3 */
"$JAVA_HOME/lib/ppc/$VM_NAME/libjvm.so", /* Sun JRE 1.3 */
#endif
#elif defined(OS_HPUX)
"$JAVA_HOME/jre/lib/" CPU "/$VM_NAME/libjvm." SO_EXT,
"$JAVA_HOME/lib/" CPU "/$VM_NAME/libjvm." SO_EXT,
#elif defined(OS_SYSV)
"$JAVA_HOME/jre/lib/" CPU "/$VM_NAME/dce_threads/libjvm.so",
"$JAVA_HOME/jre/lib/" CPU "/$VM_NAME/green_threads/libjvm.so",
"$JAVA_HOME/lib/" CPU "/$VM_NAME/dce_threads/libjvm.so",
"$JAVA_HOME/lib/" CPU "/$VM_NAME/green_threads/libjvm.so",
#endif
NULL,
};