[vmkit-commits] [vmkit] r68386 - in /vmkit/trunk/tools/llcj: LinkPaths.h.in Makefile llcj.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Fri Apr 3 06:38:24 PDT 2009
Author: geoffray
Date: Fri Apr 3 08:37:56 2009
New Revision: 68386
URL: http://llvm.org/viewvc/llvm-project?rev=68386&view=rev
Log:
Make room for generating executables with LLVM JIT, but wait until
I figure out how to use llvm-config properly.
Modified:
vmkit/trunk/tools/llcj/LinkPaths.h.in
vmkit/trunk/tools/llcj/Makefile
vmkit/trunk/tools/llcj/llcj.cpp
Modified: vmkit/trunk/tools/llcj/LinkPaths.h.in
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/llcj/LinkPaths.h.in?rev=68386&r1=68385&r2=68386&view=diff
==============================================================================
--- vmkit/trunk/tools/llcj/LinkPaths.h.in (original)
+++ vmkit/trunk/tools/llcj/LinkPaths.h.in Fri Apr 3 08:37:56 2009
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
-#define LLVMLibs "-L at LLVM_OBJ@/Release/lib";
-#define VMKITLibs1 "-L at abs_top_objdir@/Release/lib";
-#define VMKITLibs2 "-L at abs_top_srcdir@/Release/lib";
-#define VMKITLibs3 "-L at PROJ_INSTALL_ROOT@/lib";
+#define LLVMLibs "@LLVM_OBJ@"
+#define VMKITLibs1 "-L at abs_top_objdir@/Release/lib"
+#define VMKITLibs2 "-L at abs_top_srcdir@/Release/lib"
+#define VMKITLibs3 "-L at PROJ_INSTALL_ROOT@/lib"
Modified: vmkit/trunk/tools/llcj/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/llcj/Makefile?rev=68386&r1=68385&r2=68386&view=diff
==============================================================================
--- vmkit/trunk/tools/llcj/Makefile (original)
+++ vmkit/trunk/tools/llcj/Makefile Fri Apr 3 08:37:56 2009
@@ -8,7 +8,7 @@
##===----------------------------------------------------------------------===##
LEVEL = ../..
-DIRS = libjnjvm
+DIRS = libjnjvm libjnjvmjit
include $(LEVEL)/Makefile.config
Modified: vmkit/trunk/tools/llcj/llcj.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/llcj/llcj.cpp?rev=68386&r1=68385&r2=68386&view=diff
==============================================================================
--- vmkit/trunk/tools/llcj/llcj.cpp (original)
+++ vmkit/trunk/tools/llcj/llcj.cpp Fri Apr 3 08:37:56 2009
@@ -30,11 +30,16 @@
bool runGCC = true;
char* className = 0;
bool shared = false;
+ bool withJIT = false;
for (int i = 1; i < argc; ++i) {
if (!strcmp(argv[i], "-shared")) {
gccArgv[gccArgc++] = argv[i];
shared = true;
+ } else if (!strcmp(argv[i], "-with-jit") ||
+ !strcmp(argv[i], "--with-jit")) {
+ withJIT = true;
+ vmjcArgv[vmjcArgc++] = argv[i];
} else if (!strcmp(argv[i], "-O1") || !strcmp(argv[i], "-O2") ||
!strcmp(argv[i], "-O3")) {
opt = argv[i];
@@ -58,9 +63,19 @@
if (len > 4 && (!strcmp(&name[len - 4], ".jar") ||
!strcmp(&name[len - 4], ".zip"))) {
vmjcArgv[vmjcArgc++] = name;
+ char* slash = strrchr(name, '/');
+ if (slash) {
+ name = slash;
+ len = strlen(name);
+ }
className = strndup(name, len - 4);
} else if (len > 6 && !strcmp(&name[len - 6], ".class")) {
vmjcArgv[vmjcArgc++] = name;
+ char* slash = strrchr(name, '/');
+ if (slash) {
+ name = slash;
+ len = strlen(name);
+ }
className = strndup(name, len - 6);
} else {
gccArgv[gccArgc++] = name;
@@ -110,9 +125,9 @@
vmjcArgv[vmjcArgc++] = "-f";
vmjcArgv[vmjcArgc++] = "-o";
vmjcArgv[vmjcArgc++] = Out.toString().c_str();
-
+
res = sys::Program::ExecuteAndWait(Prog, vmjcArgv);
-
+
if (!res && opt) {
sys::Path OptOut = tempDir;
OptOut.appendComponent("llvmopt");
@@ -185,7 +200,7 @@
gccArgv[0] = Prog.toString().c_str();
gccArgv[gccArgc++] = Out.toString().c_str();
- gccArgv[gccArgc++] = LLVMLibs;
+ gccArgv[gccArgc++] = "-L"LLVMLibs"/Release/lib";
gccArgv[gccArgc++] = VMKITLibs1;
gccArgv[gccArgc++] = VMKITLibs2;
gccArgv[gccArgc++] = VMKITLibs3;
@@ -194,7 +209,11 @@
gccArgv[gccArgc++] = "-lm";
gccArgv[gccArgc++] = "-ldl";
gccArgv[gccArgc++] = "-lz";
- gccArgv[gccArgc++] = "-ljnjvm";
+ if (withJIT) {
+ gccArgv[gccArgc++] = "-ljnjvmjit";
+ } else {
+ gccArgv[gccArgc++] = "-ljnjvm";
+ }
gccArgv[gccArgc++] = "-lvmjc";
gccArgv[gccArgc++] = "-lLLVMSupport";
#if !defined(__MACH__)
More information about the vmkit-commits
mailing list