mirror of
https://github.com/corda/corda.git
synced 2025-01-06 05:04:20 +00:00
Allow avian.bootstrap to accept multiple libraries
This commit is contained in:
parent
9b9bc1de00
commit
e523547b19
@ -3709,16 +3709,6 @@ populateJNITables(JavaVMVTable* vmTable, JNIEnvVTable* envTable)
|
|||||||
|
|
||||||
} // namespace vm
|
} // namespace vm
|
||||||
|
|
||||||
#define BOOTSTRAP_PROPERTY "avian.bootstrap"
|
|
||||||
#define CRASHDIR_PROPERTY "avian.crash.dir"
|
|
||||||
#define EMBED_PREFIX_PROPERTY "avian.embed.prefix"
|
|
||||||
#define CLASSPATH_PROPERTY "java.class.path"
|
|
||||||
#define JAVA_HOME_PROPERTY "java.home"
|
|
||||||
#define BOOTCLASSPATH_PREPEND_OPTION "bootclasspath/p"
|
|
||||||
#define BOOTCLASSPATH_OPTION "bootclasspath"
|
|
||||||
#define BOOTCLASSPATH_APPEND_OPTION "bootclasspath/a"
|
|
||||||
#define BOOTCLASSPATH_APPEND_OPTION "bootclasspath/a"
|
|
||||||
|
|
||||||
extern "C" JNIEXPORT jint JNICALL
|
extern "C" JNIEXPORT jint JNICALL
|
||||||
JNI_GetDefaultJavaVMInitArgs(void*)
|
JNI_GetDefaultJavaVMInitArgs(void*)
|
||||||
{
|
{
|
||||||
|
10
src/jnienv.h
10
src/jnienv.h
@ -13,6 +13,16 @@
|
|||||||
|
|
||||||
#include "machine.h"
|
#include "machine.h"
|
||||||
|
|
||||||
|
#define BOOTSTRAP_PROPERTY "avian.bootstrap"
|
||||||
|
#define CRASHDIR_PROPERTY "avian.crash.dir"
|
||||||
|
#define EMBED_PREFIX_PROPERTY "avian.embed.prefix"
|
||||||
|
#define CLASSPATH_PROPERTY "java.class.path"
|
||||||
|
#define JAVA_HOME_PROPERTY "java.home"
|
||||||
|
#define BOOTCLASSPATH_PREPEND_OPTION "bootclasspath/p"
|
||||||
|
#define BOOTCLASSPATH_OPTION "bootclasspath"
|
||||||
|
#define BOOTCLASSPATH_APPEND_OPTION "bootclasspath/a"
|
||||||
|
#define BOOTCLASSPATH_APPEND_OPTION "bootclasspath/a"
|
||||||
|
|
||||||
namespace vm {
|
namespace vm {
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -3008,6 +3008,13 @@ Machine::Machine(System* system, Heap* heap, Finder* bootFinder,
|
|||||||
|
|
||||||
populateJNITables(&javaVMVTable, &jniEnvVTable);
|
populateJNITables(&javaVMVTable, &jniEnvVTable);
|
||||||
|
|
||||||
|
const char* bootstrapProperty = strdup(findProperty(this, BOOTSTRAP_PROPERTY));
|
||||||
|
const char* bootstrapPropertyEnd = bootstrapProperty + (bootstrapProperty ? strlen(bootstrapProperty) : 0);
|
||||||
|
char* codeLibraryName = (char*)bootstrapProperty;
|
||||||
|
char* codeLibraryNameEnd = 0;
|
||||||
|
if (codeLibraryName && (codeLibraryNameEnd = strchr(codeLibraryName, system->pathSeparator())))
|
||||||
|
*codeLibraryNameEnd = 0;
|
||||||
|
|
||||||
if (not system->success(system->make(&localThread)) or
|
if (not system->success(system->make(&localThread)) or
|
||||||
not system->success(system->make(&stateLock)) or
|
not system->success(system->make(&stateLock)) or
|
||||||
not system->success(system->make(&heapLock)) or
|
not system->success(system->make(&heapLock)) or
|
||||||
@ -3015,10 +3022,24 @@ Machine::Machine(System* system, Heap* heap, Finder* bootFinder,
|
|||||||
not system->success(system->make(&referenceLock)) or
|
not system->success(system->make(&referenceLock)) or
|
||||||
not system->success(system->make(&shutdownLock)) or
|
not system->success(system->make(&shutdownLock)) or
|
||||||
not system->success
|
not system->success
|
||||||
(system->load(&libraries, findProperty(this, "avian.bootstrap"))))
|
(system->load(&libraries, bootstrapProperty)))
|
||||||
{
|
{
|
||||||
system->abort();
|
system->abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
System::Library* additionalLibrary = 0;
|
||||||
|
while (codeLibraryNameEnd && codeLibraryNameEnd + 1 < bootstrapPropertyEnd) {
|
||||||
|
codeLibraryName = codeLibraryNameEnd + 1;
|
||||||
|
codeLibraryNameEnd = strchr(codeLibraryName, system->pathSeparator());
|
||||||
|
if (codeLibraryNameEnd)
|
||||||
|
*codeLibraryNameEnd = 0;
|
||||||
|
|
||||||
|
if (!system->success(system->load(&additionalLibrary, codeLibraryName)))
|
||||||
|
system->abort();
|
||||||
|
libraries->setNext(additionalLibrary);
|
||||||
|
}
|
||||||
|
|
||||||
|
free((void*)bootstrapProperty);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
Loading…
Reference in New Issue
Block a user