set java.home to path of JRE, not JDK

This commit is contained in:
Joel Dice 2010-09-20 18:38:38 -06:00
parent 17f495eb27
commit efd3ccb04f
5 changed files with 24 additions and 24 deletions

View File

@ -51,8 +51,8 @@ test = test
classpath = avian classpath = avian
test-executable = $(executable) test-executable = $(executable)
generator-classpath = $(classpath-build)
boot-classpath = $(classpath-build) boot-classpath = $(classpath-build)
java-home = /tmp
ifdef openjdk ifdef openjdk
classpath = openjdk classpath = openjdk
@ -62,9 +62,8 @@ ifdef openjdk
else else
openjdk-lib-dir = $(openjdk)/jre/lib openjdk-lib-dir = $(openjdk)/jre/lib
endif endif
classpath-cflags = -DAVIAN_OPENJDK_JAVA_HOME=\"$(openjdk)\" java-home = $(openjdk)/jre
test-executable = $(executable-dynamic) test-executable = $(executable-dynamic)
generator-classpath := $(generator-classpath):$(openjdk)/jre/lib/rt.jar
boot-classpath := $(boot-classpath):$(openjdk)/jre/lib/rt.jar boot-classpath := $(boot-classpath):$(openjdk)/jre/lib/rt.jar
endif endif
@ -116,7 +115,7 @@ warnings = -Wall -Wextra -Werror -Wunused-parameter -Winit-self \
common-cflags = $(warnings) -fno-rtti -fno-exceptions -fno-omit-frame-pointer \ common-cflags = $(warnings) -fno-rtti -fno-exceptions -fno-omit-frame-pointer \
"-I$(JAVA_HOME)/include" -idirafter $(src) -I$(build) \ "-I$(JAVA_HOME)/include" -idirafter $(src) -I$(build) \
-D__STDC_LIMIT_MACROS -D_JNI_IMPLEMENTATION_ -DAVIAN_VERSION=\"$(version)\" \ -D__STDC_LIMIT_MACROS -D_JNI_IMPLEMENTATION_ -DAVIAN_VERSION=\"$(version)\" \
-DUSE_ATOMIC_OPERATIONS $(classpath-cflags) -DUSE_ATOMIC_OPERATIONS -DAVIAN_JAVA_HOME=\"$(java-home)\"
build-cflags = $(common-cflags) -fPIC -fvisibility=hidden \ build-cflags = $(common-cflags) -fPIC -fvisibility=hidden \
"-I$(JAVA_HOME)/include/linux" -I$(src) -pthread "-I$(JAVA_HOME)/include/linux" -I$(src) -pthread
@ -515,7 +514,7 @@ gen-arg = $(shell echo $(1) | sed -e 's:$(build)/type-\(.*\)\.cpp:\1:')
$(generated-code): %.cpp: $(src)/types.def $(generator) $(classpath-dep) $(generated-code): %.cpp: $(src)/types.def $(generator) $(classpath-dep)
@echo "generating $(@)" @echo "generating $(@)"
@mkdir -p $(dir $(@)) @mkdir -p $(dir $(@))
$(generator) $(generator-classpath) $(<) $(@) $(call gen-arg,$(@)) $(generator) $(boot-classpath) $(<) $(@) $(call gen-arg,$(@))
$(classpath-build)/%.class: $(classpath-src)/%.java $(classpath-build)/%.class: $(classpath-src)/%.java
@echo $(<) @echo $(<)

View File

@ -128,7 +128,7 @@ enumerateThreads(Thread* t, Thread* x, object array, unsigned* index,
namespace vm { namespace vm {
Classpath* Classpath*
makeClasspath(System*, Allocator* allocator) makeClasspath(System*, Allocator* allocator, const char*)
{ {
return new (allocator->allocate(sizeof(local::MyClasspath))) return new (allocator->allocate(sizeof(local::MyClasspath)))
local::MyClasspath(allocator); local::MyClasspath(allocator);

View File

@ -139,16 +139,11 @@ makeClassNameString(Thread* t, object name)
class MyClasspath : public Classpath { class MyClasspath : public Classpath {
public: public:
static const unsigned BufferSize = 256; static const unsigned BufferSize = 1024;
MyClasspath(System* s, Allocator* allocator): MyClasspath(System* s, Allocator* allocator, const char* javaHome):
allocator(allocator) allocator(allocator)
{ {
const char* javaHome = getenv("JAVA_HOME");
if (javaHome == 0) {
javaHome = AVIAN_OPENJDK_JAVA_HOME;
}
class StringBuilder { class StringBuilder {
public: public:
StringBuilder(System* s, char* pointer, unsigned remaining): StringBuilder(System* s, char* pointer, unsigned remaining):
@ -157,7 +152,7 @@ class MyClasspath : public Classpath {
void append(const char* append) { void append(const char* append) {
unsigned length = strlen(append); unsigned length = strlen(append);
assert(s, remaining > length); expect(s, remaining > length);
strncpy(pointer, append, remaining); strncpy(pointer, append, remaining);
@ -186,24 +181,24 @@ class MyClasspath : public Classpath {
this->classpath = sb.pointer; this->classpath = sb.pointer;
sb.append(javaHome); sb.append(javaHome);
sb.append("/jre/lib/rt.jar"); sb.append("/lib/rt.jar");
sb.append(s->pathSeparator()); sb.append(s->pathSeparator());
sb.append(javaHome); sb.append(javaHome);
sb.append("/jre/lib/jsse.jar"); sb.append("/lib/jsse.jar");
sb.append(s->pathSeparator()); sb.append(s->pathSeparator());
sb.append(javaHome); sb.append(javaHome);
sb.append("/jre/lib/jce.jar"); sb.append("/lib/jce.jar");
sb.append(s->pathSeparator()); sb.append(s->pathSeparator());
sb.append(javaHome); sb.append(javaHome);
sb.append("/jre/lib/resources.jar"); sb.append("/lib/resources.jar");
sb.append('\0'); sb.append('\0');
this->libraryPath = sb.pointer; this->libraryPath = sb.pointer;
sb.append(javaHome); sb.append(javaHome);
#ifdef ARCH_x86_64 #ifdef ARCH_x86_64
sb.append("/jre/lib/amd64"); sb.append("/lib/amd64");
#else #else
sb.append("/jre/lib"); sb.append("/lib");
#endif #endif
} }
@ -634,10 +629,10 @@ interruptLock(Thread* t, object thread)
namespace vm { namespace vm {
Classpath* Classpath*
makeClasspath(System* s, Allocator* allocator) makeClasspath(System* s, Allocator* allocator, const char* javaHome)
{ {
return new (allocator->allocate(sizeof(local::MyClasspath))) return new (allocator->allocate(sizeof(local::MyClasspath)))
local::MyClasspath(s, allocator); local::MyClasspath(s, allocator, javaHome);
} }
} // namespace vm } // namespace vm

View File

@ -2238,6 +2238,7 @@ populateJNITables(JavaVMVTable* vmTable, JNIEnvVTable* envTable)
#define BOOTSTRAP_PROPERTY "avian.bootstrap" #define BOOTSTRAP_PROPERTY "avian.bootstrap"
#define CRASHDIR_PROPERTY "avian.crash.dir" #define CRASHDIR_PROPERTY "avian.crash.dir"
#define CLASSPATH_PROPERTY "java.class.path" #define CLASSPATH_PROPERTY "java.class.path"
#define JAVA_HOME_PROPERTY "java.home"
#define BOOTCLASSPATH_PREPEND_OPTION "bootclasspath/p" #define BOOTCLASSPATH_PREPEND_OPTION "bootclasspath/p"
#define BOOTCLASSPATH_OPTION "bootclasspath" #define BOOTCLASSPATH_OPTION "bootclasspath"
#define BOOTCLASSPATH_APPEND_OPTION "bootclasspath/a" #define BOOTCLASSPATH_APPEND_OPTION "bootclasspath/a"
@ -2257,6 +2258,7 @@ JNI_CreateJavaVM(Machine** m, Thread** t, void* args)
unsigned heapLimit = 0; unsigned heapLimit = 0;
const char* bootLibrary = 0; const char* bootLibrary = 0;
const char* classpath = 0; const char* classpath = 0;
const char* javaHome = AVIAN_JAVA_HOME;
const char* bootClasspathPrepend = ""; const char* bootClasspathPrepend = "";
const char* bootClasspath = ""; const char* bootClasspath = "";
const char* bootClasspathAppend = ""; const char* bootClasspathAppend = "";
@ -2296,6 +2298,10 @@ JNI_CreateJavaVM(Machine** m, Thread** t, void* args)
sizeof(CLASSPATH_PROPERTY)) == 0) sizeof(CLASSPATH_PROPERTY)) == 0)
{ {
classpath = p + sizeof(CLASSPATH_PROPERTY); classpath = p + sizeof(CLASSPATH_PROPERTY);
} else if (strncmp(p, JAVA_HOME_PROPERTY "=",
sizeof(JAVA_HOME_PROPERTY)) == 0)
{
javaHome = p + sizeof(JAVA_HOME_PROPERTY);
} }
++ propertyCount; ++ propertyCount;
@ -2308,7 +2314,7 @@ JNI_CreateJavaVM(Machine** m, Thread** t, void* args)
System* s = makeSystem(crashDumpDirectory); System* s = makeSystem(crashDumpDirectory);
Heap* h = makeHeap(s, heapLimit); Heap* h = makeHeap(s, heapLimit);
Classpath* c = makeClasspath(s, h); Classpath* c = makeClasspath(s, h, javaHome);
const char* classpathBootClasspath = c->bootClasspath(); const char* classpathBootClasspath = c->bootClasspath();
unsigned bcppl = strlen(bootClasspathPrepend); unsigned bcppl = strlen(bootClasspathPrepend);

View File

@ -1446,7 +1446,7 @@ runJavaThread(Thread* t)
} }
Classpath* Classpath*
makeClasspath(System* system, Allocator* allocator); makeClasspath(System* system, Allocator* allocator, const char* javaHome);
typedef uint64_t (JNICALL *FastNativeFunction)(Thread*, object, uintptr_t*); typedef uint64_t (JNICALL *FastNativeFunction)(Thread*, object, uintptr_t*);