set boot library if run as java or javac command

If sun.java.command or sun.java.launcher are set, then the VM is being
loaded from e.g. libjvm.so, not as a stand-alone executable.  This
commit allows libjvm.dylib to be used with OpenJDK's java command on OS
X.
This commit is contained in:
Joel Dice 2013-04-19 18:28:20 -07:00
parent a098926547
commit e9a8aa2e65
2 changed files with 10 additions and 0 deletions

View File

@ -14,6 +14,8 @@
#include "avian/machine.h"
#define BOOTSTRAP_PROPERTY "avian.bootstrap"
#define JAVA_COMMAND_PROPERTY "sun.java.command"
#define JAVA_LAUNCHER_PROPERTY "sun.java.launcher"
#define CRASHDIR_PROPERTY "avian.crash.dir"
#define EMBED_PREFIX_PROPERTY "avian.embed.prefix"
#define CLASSPATH_PROPERTY "java.class.path"

View File

@ -3829,6 +3829,14 @@ JNI_CreateJavaVM(Machine** m, Thread** t, void* args)
sizeof(BOOTSTRAP_PROPERTY)) == 0)
{
bootLibraries = p + sizeof(BOOTSTRAP_PROPERTY);
} else if (strncmp(p, JAVA_COMMAND_PROPERTY "=",
sizeof(JAVA_COMMAND_PROPERTY)) == 0
or strncmp(p, JAVA_LAUNCHER_PROPERTY "=",
sizeof(JAVA_LAUNCHER_PROPERTY)) == 0)
{
// this means we're being invoked via the javac or java
// command, so the bootstrap library should be e.g. libjvm.so
bootLibraries = SO_PREFIX "jvm" SO_SUFFIX;
} else if (strncmp(p, CRASHDIR_PROPERTY "=",
sizeof(CRASHDIR_PROPERTY)) == 0)
{