From 33d0d8a72b1af3dbbbd11a004a2e36f172d207cd Mon Sep 17 00:00:00 2001 From: "jband%netscape.com" Date: Wed, 23 Sep 1998 04:01:03 +0000 Subject: [PATCH] improved makefiles. added javawrap git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10768 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/js/jsd/java/jsd_jvm.c | 8 +- mozilla/js/jsd/java/jsdjava.c | 22 +- mozilla/js/jsd/java/jsdjava.h | 39 +- mozilla/js/jsd/java/jsdjava.mak | 63 ++- mozilla/js/jsd/javawrap/javawrap.mak | 147 ++++++ mozilla/js/jsd/javawrap/mk.bat | 1 + mozilla/js/jsd/javawrap/nativejsengine.c | 617 +++++++++++++++++++++++ mozilla/js/jsd/jsd.mak | 46 +- mozilla/js/jsd/jsdshell.mak | 161 +++--- mozilla/js/jsd/mkshell.bat | 3 +- 10 files changed, 949 insertions(+), 158 deletions(-) create mode 100644 mozilla/js/jsd/javawrap/javawrap.mak create mode 100755 mozilla/js/jsd/javawrap/mk.bat create mode 100644 mozilla/js/jsd/javawrap/nativejsengine.c diff --git a/mozilla/js/jsd/java/jsd_jvm.c b/mozilla/js/jsd/java/jsd_jvm.c index 0a480213dac..8269c9d94b5 100644 --- a/mozilla/js/jsd/java/jsd_jvm.c +++ b/mozilla/js/jsd/java/jsd_jvm.c @@ -43,9 +43,7 @@ */ /* -* Code to start a Java VM (*some* code from the JRE) and load the JSDebugger. -* With a small amount of work this can be generalized and made runtime -* configuarable. +* Code to start a Java VM (*some* code from the JRE) */ #include "jsdj.h" @@ -56,7 +54,7 @@ static char* more_classpath[] = { - /* XXX these shouldn't ought to be hard-coded */ + /* XXX temporary until js/ref/jsd gets moved to js/jsd */ {"..\\..\\jsdj\\dist\\classes"}, {"..\\..\\jsdj\\dist\\classes\\ifc11.jar"}, @@ -75,8 +73,6 @@ static char* more_classpath[] = }; #define MORE_CLASSPATH_COUNT (sizeof(more_classpath)/sizeof(more_classpath[0])) -/* XXX these shouldn't ought to be hard-coded */ - /* * static char main_class[] = "callnative"; * static char main_class[] = "simpleIFC"; diff --git a/mozilla/js/jsd/java/jsdjava.c b/mozilla/js/jsd/java/jsdjava.c index 9ad464a9333..07794c161de 100644 --- a/mozilla/js/jsd/java/jsdjava.c +++ b/mozilla/js/jsd/java/jsdjava.c @@ -22,33 +22,33 @@ #include "jsdj.h" -PUBLIC_API(JSDJContext*) +JSDJ_PUBLIC_API(JSDJContext*) JSDJ_SimpleInitForSingleContextMode(JSDContext* jsdc, JSDJ_GetJNIEnvProc getEnvProc, void* user) { return jsdj_SimpleInitForSingleContextMode(jsdc, getEnvProc, user); } -PUBLIC_API(JSBool) +JSDJ_PUBLIC_API(JSBool) JSDJ_SetSingleContextMode() { return jsdj_SetSingleContextMode(); } -PUBLIC_API(JSDJContext*) +JSDJ_PUBLIC_API(JSDJContext*) JSDJ_CreateContext() { return jsdj_CreateContext(); } -PUBLIC_API(void) +JSDJ_PUBLIC_API(void) JSDJ_DestroyContext(JSDJContext* jsdjc) { JSDJ_ASSERT_VALID_CONTEXT(jsdjc); jsdj_DestroyContext(jsdjc); } -JSD_PUBLIC_API(void) +JSDJ_PUBLIC_API(void) JSDJ_SetUserCallbacks(JSDJContext* jsdjc, JSDJ_UserCallbacks* callbacks, void* user) { @@ -59,7 +59,7 @@ JSDJ_SetUserCallbacks(JSDJContext* jsdjc, JSDJ_UserCallbacks* callbacks, jsdj_SetUserCallbacks(jsdjc, callbacks, user); } -PUBLIC_API(void) +JSDJ_PUBLIC_API(void) JSDJ_SetJNIEnvForCurrentThread(JSDJContext* jsdjc, JNIEnv* env) { JSDJ_ASSERT_VALID_CONTEXT(jsdjc); @@ -67,14 +67,14 @@ JSDJ_SetJNIEnvForCurrentThread(JSDJContext* jsdjc, JNIEnv* env) jsdj_SetJNIEnvForCurrentThread(jsdjc, env); } -PUBLIC_API(JNIEnv*) +JSDJ_PUBLIC_API(JNIEnv*) JSDJ_GetJNIEnvForCurrentThread(JSDJContext* jsdjc) { JSDJ_ASSERT_VALID_CONTEXT(jsdjc); return jsdj_GetJNIEnvForCurrentThread(jsdjc); } -PUBLIC_API(void) +JSDJ_PUBLIC_API(void) JSDJ_SetJSDContext(JSDJContext* jsdjc, JSDContext* jsdc) { JSDJ_ASSERT_VALID_CONTEXT(jsdjc); @@ -82,14 +82,14 @@ JSDJ_SetJSDContext(JSDJContext* jsdjc, JSDContext* jsdc) jsdj_SetJSDContext(jsdjc, jsdc); } -PUBLIC_API(JSDContext*) +JSDJ_PUBLIC_API(JSDContext*) JSDJ_GetJSDContext(JSDJContext* jsdjc) { JSDJ_ASSERT_VALID_CONTEXT(jsdjc); return jsdj_GetJSDContext(jsdjc); } -PUBLIC_API(JSBool) +JSDJ_PUBLIC_API(JSBool) JSDJ_RegisterNatives(JSDJContext* jsdjc) { JSDJ_ASSERT_VALID_CONTEXT(jsdjc); @@ -99,7 +99,7 @@ JSDJ_RegisterNatives(JSDJContext* jsdjc) /***************************************************************************/ #ifdef JSD_STANDALONE_JAVA_VM -PUBLIC_API(JNIEnv*) +JSDJ_PUBLIC_API(JNIEnv*) JSDJ_CreateJavaVMAndStartDebugger(JSDJContext* jsdjc) { JSDJ_ASSERT_VALID_CONTEXT(jsdjc); diff --git a/mozilla/js/jsd/java/jsdjava.h b/mozilla/js/jsd/java/jsdjava.h index 7b9f0b6f147..c4a5c98f36b 100644 --- a/mozilla/js/jsd/java/jsdjava.h +++ b/mozilla/js/jsd/java/jsdjava.h @@ -43,6 +43,23 @@ JS_END_EXTERN_C JS_BEGIN_EXTERN_C +/* + * The linkage of JSDJ API functions differs depending on whether the file is + * used within the JSDJ library or not. Any source file within the JSDJ + * libraray should define EXPORT_JSDJ_API whereas any client of the library + * should not. + */ +#ifdef EXPORT_JSDJ_API +#define JSDJ_PUBLIC_API(t) PUBLIC_API(t) +#define JSDJ_PUBLIC_DATA(t) PUBLIC_DATA(t) +#else +#define JSDJ_PUBLIC_API(t) IMPORT_API(t) +#define JSDJ_PUBLIC_DATA(t) IMPORT_DATA(t) +#endif + +#define JSDJ_FRIEND_API(t) JSDJ_PUBLIC_API(t) +#define JSDJ_FRIEND_DATA(t) JSDJ_PUBLIC_DATA(t) + /***************************************************************************/ /* Opaque typedefs for handles */ @@ -69,42 +86,42 @@ typedef struct JSDJ_GetJNIEnvProc getJNIEnv; } JSDJ_UserCallbacks; -extern PUBLIC_API(JSDJContext*) +extern JSDJ_PUBLIC_API(JSDJContext*) JSDJ_SimpleInitForSingleContextMode(JSDContext* jsdc, JSDJ_GetJNIEnvProc getEnvProc, void* user); -extern PUBLIC_API(JSBool) +extern JSDJ_PUBLIC_API(JSBool) JSDJ_SetSingleContextMode(); -extern PUBLIC_API(JSDJContext*) +extern JSDJ_PUBLIC_API(JSDJContext*) JSDJ_CreateContext(); -extern PUBLIC_API(void) +extern JSDJ_PUBLIC_API(void) JSDJ_DestroyContext(JSDJContext* jsdjc); -extern JSD_PUBLIC_API(void) +extern JSDJ_PUBLIC_API(void) JSDJ_SetUserCallbacks(JSDJContext* jsdjc, JSDJ_UserCallbacks* callbacks, void* user); -extern PUBLIC_API(void) +extern JSDJ_PUBLIC_API(void) JSDJ_SetJNIEnvForCurrentThread(JSDJContext* jsdjc, JNIEnv* env); -extern PUBLIC_API(JNIEnv*) +extern JSDJ_PUBLIC_API(JNIEnv*) JSDJ_GetJNIEnvForCurrentThread(JSDJContext* jsdjc); -extern PUBLIC_API(void) +extern JSDJ_PUBLIC_API(void) JSDJ_SetJSDContext(JSDJContext* jsdjc, JSDContext* jsdc); -extern PUBLIC_API(JSDContext*) +extern JSDJ_PUBLIC_API(JSDContext*) JSDJ_GetJSDContext(JSDJContext* jsdjc); -extern PUBLIC_API(JSBool) +extern JSDJ_PUBLIC_API(JSBool) JSDJ_RegisterNatives(JSDJContext* jsdjc); /***************************************************************************/ #ifdef JSD_STANDALONE_JAVA_VM -extern PUBLIC_API(JNIEnv*) +extern JSDJ_PUBLIC_API(JNIEnv*) JSDJ_CreateJavaVMAndStartDebugger(JSDJContext* jsdjc); #endif /* JSD_STANDALONE_JAVA_VM */ diff --git a/mozilla/js/jsd/java/jsdjava.mak b/mozilla/js/jsd/java/jsdjava.mak index 64743e538cf..bf713a5fb32 100644 --- a/mozilla/js/jsd/java/jsdjava.mak +++ b/mozilla/js/jsd/java/jsdjava.mak @@ -2,32 +2,50 @@ PROJ = jsdjava JSDJAVA = . JSD = $(JSDJAVA)\.. -JSSRC = $(JSD)\..\src +JS = $(JSD)\..\src +JSPROJ = js32 +JSDPROJ = jsd + +!IF "$(BUILD_OPT)" != "" +OBJ = Release +CC_FLAGS = /DNDEBUG +!ELSE OBJ = Debug +CC_FLAGS = /DDEBUG +LINK_FLAGS = /DEBUG +!ENDIF + +QUIET=@ CFLAGS = /nologo /MDd /W3 /Gm /GX /Zi /Od\ - /I $(JSSRC)\ + /I $(JS)\ /I $(JSD)\ - /I jre\ - /I jre\win32\ + /I $(JSDJAVA)\ /DDEBUG /DWIN32 /DXP_PC /D_WINDOWS /D_WIN32\ - /DEXPORT_JSD_API\ + /DJSD_THREADSAFE\ + /DEXPORT_JSDJ_API\ /DJSDEBUGGER\ !IF "$(JSD_STANDALONE_JAVA_VM)" != "" + /I $(JSDJAVA)\jre\ + /I $(JSDJAVA)\jre\win32\ /DJSD_STANDALONE_JAVA_VM\ !ENDIF - /DJSD_THREADSAFE\ + $(CC_FLAGS)\ /c /Fp$(OBJ)\$(PROJ).pch /Fd$(OBJ)\$(PROJ).pdb /YX -Fo$@ $< -LIBFLAGS = /nologo /subsystem:console /machine:I386 /out:$(OBJ)\$(PROJ).lib +LFLAGS = /nologo /subsystem:console /DLL /incremental:no /machine:I386 \ + $(LINK_FLAGS) /pdb:$(OBJ)\$(PROJ).pdb -out:$(OBJ)\$(PROJ).dll + +LLIBS = kernel32.lib advapi32.lib \ + $(JS)\$(OBJ)\$(JSPROJ).lib $(JSD)\$(OBJ)\$(JSDPROJ).lib CPP=cl.exe -LIB32=lib.exe +LINK32=link.exe -all: $(OBJ) $(OBJ)\$(PROJ).lib +all: $(OBJ) $(OBJ)\$(PROJ).dll -$(OBJ)\$(PROJ).lib: \ +$(OBJ)\$(PROJ).dll: \ !IF "$(JSD_STANDALONE_JAVA_VM)" != "" $(OBJ)\jsd_jvm.obj \ $(OBJ)\jre.obj \ @@ -35,25 +53,26 @@ $(OBJ)\$(PROJ).lib: \ !ENDIF $(OBJ)\jsdjava.obj \ $(OBJ)\jsd_jntv.obj - $(LIB32) $(LIBFLAGS) $** $(LLIBS) + $(QUIET)$(LINK32) $(LFLAGS) $** $(LLIBS) {$(JSDJAVA)}.c{$(OBJ)}.obj : - $(CPP) $(CFLAGS) + $(QUIET)$(CPP) $(CFLAGS) {$(JSDJAVA)\jre}.c{$(OBJ)}.obj : - $(CPP) $(CFLAGS) + $(QUIET)$(CPP) $(CFLAGS) {$(JSDJAVA)\jre\win32}.c{$(OBJ)}.obj : - $(CPP) $(CFLAGS) + $(QUIET)$(CPP) $(CFLAGS) $(OBJ) : - mkdir $(OBJ) + $(QUIET)mkdir $(OBJ) clean: - del $(OBJ)\*.pch - del $(OBJ)\*.obj - del $(OBJ)\*.exp - del $(OBJ)\*.lib - del $(OBJ)\*.idb - del $(OBJ)\*.pdb - del $(OBJ)\*.exe + @echo deleting old output + $(QUIET)del $(OBJ)\*.pch >NUL + $(QUIET)del $(OBJ)\*.obj >NUL + $(QUIET)del $(OBJ)\*.exp >NUL + $(QUIET)del $(OBJ)\*.lib >NUL + $(QUIET)del $(OBJ)\*.idb >NUL + $(QUIET)del $(OBJ)\*.pdb >NUL + $(QUIET)del $(OBJ)\*.dll >NUL diff --git a/mozilla/js/jsd/javawrap/javawrap.mak b/mozilla/js/jsd/javawrap/javawrap.mak new file mode 100644 index 00000000000..ec8ff55e8fb --- /dev/null +++ b/mozilla/js/jsd/javawrap/javawrap.mak @@ -0,0 +1,147 @@ + +PROJ = nativejsengine +PACKAGE_DOT = com.netscape.nativejsengine + +NJSE = . +TESTS = $(NJSE)\tests +GEN = $(NJSE)\_jni +JSD = $(NJSE)\.. +JS = $(JSD)\..\src +JSDJAVA = $(JSD)\java + +JSPROJ = js32 +JSDPROJ = jsd +JSDJAVAPROJ = jsdjava + +EXPORT_BIN_BASE_DIR = $(NJSE)\..\..\jsdj\dist\bin +EXPORT_CLASSES_BASE_DIR = $(NJSE)\..\..\jsdj\dist\classes + +!IF "$(BUILD_OPT)" != "" +OBJ = Release +CC_FLAGS = /DNDEBUG +!ELSE +OBJ = Debug +CC_FLAGS = /DDEBUG +LINK_FLAGS = /DEBUG +!ENDIF + +QUIET=@ + +EXPORT_BIN_DIR = $(EXPORT_BIN_BASE_DIR)\$(OBJ) + +STD_CLASSPATH = -classpath $(EXPORT_CLASSES_BASE_DIR);$(CLASSPATH) + +CFLAGS = /nologo /MDd /W3 /Gm /GX /Zi /Od\ + /DWIN32 /DXP_PC /D_WINDOWS /D_WIN32\ + /I $(JS)\ + /I $(JSD)\ + /I $(JSDJAVA)\ + /DJSDEBUGGER\ + /DJSD_THREADSAFE\ + $(CC_FLAGS)\ + /c /Fp$(OBJ)\$(PROJ).pch /Fd$(OBJ)\$(PROJ).pdb /YX -Fo$@ $< + +LFLAGS = /nologo /subsystem:console /incremental:no /DLL /machine:I386 \ + $(LINK_FLAGS) /pdb:$(OBJ)\$(PROJ).pdb -out:$(OBJ)\$(PROJ).dll + +LLIBS = kernel32.lib advapi32.lib \ + $(JS)\$(OBJ)\$(JSPROJ).lib \ + $(JSD)\$(OBJ)\$(JSDPROJ).lib \ + $(JSDJAVA)\$(OBJ)\$(JSDJAVAPROJ).lib + +CPP=cl.exe +LINK32=link.exe + +CLASSES_WITH_NATIVES = \ + $(PACKAGE_DOT).JSRuntime\ + $(PACKAGE_DOT).JSContext + + +all: $(GEN) $(OBJ) dlls mkjniheaders $(OBJ)\$(PROJ).dll export_binaries + +$(OBJ)\$(PROJ).dll: \ + $(OBJ)\nativejsengine.obj + $(QUIET)$(LINK32) $(LFLAGS) $** $(LLIBS) + +.c{$(OBJ)}.obj: + $(QUIET)$(CPP) $(CFLAGS) + +$(GEN) : + @mkdir $(GEN) + +$(OBJ) : + @mkdir $(OBJ) + +dlls : + $(QUIET)cd ..\..\src +!IF "$(BUILD_OPT)" != "" + $(QUIET)nmake -f js.mak CFG="js - Win32 Release" +!ELSE + $(QUIET)nmake -f js.mak CFG="js - Win32 Debug" +!ENDIF + $(QUIET)cd ..\jsd\javawrap + $(QUIET)cd .. + $(QUIET)nmake -f jsd.mak JSD_THREADSAFE=1 $(OPT) + $(QUIET)cd javawrap + $(QUIET)cd ..\java + $(QUIET)nmake -f jsdjava.mak $(OPT) + $(QUIET)cd ..\javawrap + + +export_binaries : mk_export_dirs + @echo exporting binaries + $(QUIET)copy $(JS)\$(OBJ)\$(JSPROJ).dll $(EXPORT_BIN_DIR) >NUL + $(QUIET)copy $(JS)\$(OBJ)\$(JSPROJ).pdb $(EXPORT_BIN_DIR) >NUL + $(QUIET)copy $(JSD)\$(OBJ)\$(JSDPROJ).dll $(EXPORT_BIN_DIR) >NUL + $(QUIET)copy $(JSD)\$(OBJ)\$(JSDPROJ).pdb $(EXPORT_BIN_DIR) >NUL + $(QUIET)copy $(JSDJAVA)\$(OBJ)\$(JSDJAVAPROJ).dll $(EXPORT_BIN_DIR) >NUL + $(QUIET)copy $(JSDJAVA)\$(OBJ)\$(JSDJAVAPROJ).pdb $(EXPORT_BIN_DIR) >NUL + $(QUIET)copy $(OBJ)\$(PROJ).pdb $(EXPORT_BIN_DIR) >NUL + $(QUIET)copy $(OBJ)\$(PROJ).dll $(EXPORT_BIN_DIR) >NUL + +mkjniheaders : + @echo generating JNI header + $(QUIET)javah -jni -d "$(GEN)" $(STD_CLASSPATH) $(CLASSES_WITH_NATIVES) + @touch *.c >NUL + +mk_export_dirs: + @if not exist $(JS)\..\jsdj\dist\NUL @mkdir $(JS)\..\jsdj\dist + @if not exist $(JS)\..\jsdj\dist\bin\NUL @mkdir $(JS)\..\jsdj\dist\bin + @if not exist $(EXPORT_BIN_DIR)\NUL @mkdir $(EXPORT_BIN_DIR) + +#mktest : +# @echo compiling Java test file +# @sj $(JAVAFLAGS) $(TEST_CLASSPATH) $(TESTS)\Main.java +# @echo copying js and jsd dlls +# @copy $(JS)\$(OBJ)\$(JSPROJ).dll $(OBJ) >NUL +# @copy $(JS)\$(OBJ)\$(JSPROJ).pdb $(OBJ) >NUL +# @copy $(JSD)\$(OBJ)\$(JSDPROJ).dll $(OBJ) >NUL +# @copy $(JSD)\$(OBJ)\$(JSDPROJ).pdb $(OBJ) >NUL +# @copy $(TESTS)\*.js $(OBJ) >NUL + +clean: + @echo deleting old output + $(QUIET)del $(OBJ)\*.pch >NUL + $(QUIET)del $(OBJ)\*.obj >NUL + $(QUIET)del $(OBJ)\*.exp >NUL + $(QUIET)del $(OBJ)\*.lib >NUL + $(QUIET)del $(OBJ)\*.idb >NUL + $(QUIET)del $(OBJ)\*.pdb >NUL + $(QUIET)del $(OBJ)\*.dll >NUL + $(QUIET)del $(GEN)\*.h >NUL + + +deep_clean: clean + $(QUIET)cd ..\..\src +!IF "$(BUILD_OPT)" != "" + $(QUIET)nmake -f js.mak CFG="js - Win32 Release" clean +!ELSE + $(QUIET)nmake -f js.mak CFG="js - Win32 Debug" clean +!ENDIF + $(QUIET)cd ..\jsd\javawrap + $(QUIET)cd .. + $(QUIET)nmake -f jsd.mak clean + $(QUIET)cd javawrap + $(QUIET)cd ..\java + $(QUIET)nmake -f jsdjava.mak clean + $(QUIET)cd ..\javawrap diff --git a/mozilla/js/jsd/javawrap/mk.bat b/mozilla/js/jsd/javawrap/mk.bat new file mode 100755 index 00000000000..38f5236ded4 --- /dev/null +++ b/mozilla/js/jsd/javawrap/mk.bat @@ -0,0 +1 @@ +nmake -f javawrap.mak %1 %2 %3 %4 %5 diff --git a/mozilla/js/jsd/javawrap/nativejsengine.c b/mozilla/js/jsd/javawrap/nativejsengine.c new file mode 100644 index 00000000000..08ea6430c64 --- /dev/null +++ b/mozilla/js/jsd/javawrap/nativejsengine.c @@ -0,0 +1,617 @@ + +#include +#include +#include + +#include "_jni/com_netscape_nativejsengine_JSRuntime.h" +#include "_jni/com_netscape_nativejsengine_JSContext.h" + +#include "jsapi.h" +#include "jstypes.h" +/* Removed by JSIFY: #include "prlog.h" */ +#include "jsutil.h" /* Added by JSIFY */ + +#ifdef JSDEBUGGER +#include "jsdebug.h" +#include "jsdjava.h" +#endif + +/***************************************************************************/ + +#define ASSERT_RETURN_VOID(x) \ +JS_BEGIN_MACRO \ + if(!(x)) \ + { \ + JS_ASSERT(0); \ + return; \ + } \ +JS_END_MACRO + +#define ASSERT_RETURN_VALUE(x,v)\ +JS_BEGIN_MACRO \ + if(!(x)) \ + { \ + JS_ASSERT(0); \ + return v; \ + } \ +JS_END_MACRO + +#define CHECK_RETURN_VOID(x) \ +JS_BEGIN_MACRO \ + if(!(x)) \ + { \ + return; \ + } \ +JS_END_MACRO + +#define CHECK_RETURN_VALUE(x,v) \ +JS_BEGIN_MACRO \ + if(!(x)) \ + { \ + return v; \ + } \ +JS_END_MACRO + +#define ASSERT_GOTO(x,w) \ +JS_BEGIN_MACRO \ + if(!(x)) \ + { \ + JS_ASSERT(0); \ + goto w; \ + } \ +JS_END_MACRO + +#define CHECK_GOTO(x,w) \ +JS_BEGIN_MACRO \ + if(!(x)) \ + { \ + goto w; \ + } \ +JS_END_MACRO + +#ifdef DEBUG +#define ASSERT_CLEAR_EXCEPTION(e) \ +JS_BEGIN_MACRO \ + if((*e)->ExceptionOccurred(e)) \ + { \ + (*e)->ExceptionDescribe(e); \ + JS_ASSERT(0); \ + } \ + (*e)->ExceptionClear(e); \ +JS_END_MACRO +#else /* ! DEBUG */ +#define ASSERT_CLEAR_EXCEPTION(e) (*e)->ExceptionClear(e) +#endif /* DEBUG */ + +#define CHECK_CLEAR_EXCEPTION(e) (*e)->ExceptionClear(e) + +/***************************************************************************/ + +typedef struct ContextInfo { + JNIEnv* env; + jobject contextObject; +} ContextInfo; + +/***************************************************************************/ + +#ifdef JSDEBUGGER +static void +_jamSourceIntoJSD(JSContext *cx, const char* src, int len, const char* filename) +{ + jclass clazz_self; + jclass clazz; + JSDJContext* jsdjc; + jobject rtObject; + jobject contextObject; + jmethodID mid; + jfieldID fid; + ContextInfo* info; + JNIEnv* env; + + info = (ContextInfo*) JS_GetContextPrivate(cx); + ASSERT_RETURN_VOID(info); + + env = info->env; + ASSERT_RETURN_VOID(env); + + contextObject = info->contextObject; + ASSERT_RETURN_VOID(contextObject); + + clazz_self = (*env)->GetObjectClass(env, contextObject); + ASSERT_RETURN_VOID(clazz_self); + + fid = (*env)->GetFieldID(env, clazz_self, "_runtime", + "Lcom/netscape/nativejsengine/JSRuntime;"); + ASSERT_RETURN_VOID(fid); + + rtObject = (*env)->GetObjectField(env, contextObject, fid); + ASSERT_RETURN_VOID(rtObject); + + clazz = (*env)->GetObjectClass(env, rtObject); + ASSERT_RETURN_VOID(clazz); + + mid = (*env)->GetMethodID(env, clazz, "getNativeDebugSupport", "()J"); + ASSERT_RETURN_VOID(mid); + + jsdjc = (JSDJContext*) (*env)->CallObjectMethod(env, rtObject, mid); + if(jsdjc) + { + JSDContext* jsdc; + + jsdc = JSDJ_GetJSDContext(jsdjc); + ASSERT_RETURN_VOID(jsdc); + + JSD_AddFullSourceText(jsdc, src, len, filename); + } +} +#endif + +static JSBool +_loadSingleFile(JSContext *cx, JSObject *obj, const char* filename) +{ + char* buf; + FILE* file; + int file_len; + jsval result; + + errno = 0; + file = fopen(filename, "rb"); + if (!file) { + JS_ReportError(cx, "can't open %s: %s", filename, strerror(errno)); + return JS_FALSE; + } + + fseek(file, 0, SEEK_END); + file_len = ftell(file); + fseek(file, 0, SEEK_SET); + + if(! file_len) { + fclose(file); + JS_ReportError(cx, "%s is empty", filename); + return JS_FALSE; + } + + buf = (char*) malloc(file_len); + if(! buf) { + fclose(file); + JS_ReportError(cx, "memory alloc error while trying to read %s", filename); + return JS_FALSE; + } + fread(buf, 1, file_len, file); + fclose(file); + +#ifdef JSDEBUGGER + _jamSourceIntoJSD(cx, buf, file_len, filename); +#endif + + JS_EvaluateScript(cx, obj, buf, file_len, filename, 1, &result); + + free(buf); + return JS_TRUE; +} + + +static void _sendPrintStringToJava(JNIEnv* env, jobject contextObject, + jmethodID mid, const char* str) +{ + if(! str) + return; + (*env)->CallObjectMethod(env, contextObject, mid, + (*env)->NewStringUTF(env, str)); +} + +static JSBool +Print(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) +{ + uintN i, n; + JSString *str; + + ContextInfo* info; + jmethodID mid; + jclass clazz; + JNIEnv* env; + + info = (ContextInfo*) JS_GetContextPrivate(cx); + ASSERT_RETURN_VALUE(info, JS_FALSE); + + env = info->env; + ASSERT_RETURN_VALUE(env, JS_FALSE); + + clazz = (*env)->GetObjectClass(env, info->contextObject); + ASSERT_RETURN_VALUE(clazz, JS_FALSE); + + mid = (*env)->GetMethodID(env, clazz, "_print", "(Ljava/lang/String;)V"); + ASSERT_RETURN_VALUE(mid, JS_FALSE); + + for (i = n = 0; i < argc; i++) { + str = JS_ValueToString(cx, argv[i]); + if (!str) + return JS_FALSE; + + if(i) + _sendPrintStringToJava(env, info->contextObject, mid, ""); + _sendPrintStringToJava(env, info->contextObject, mid, JS_GetStringBytes(str)); + n++; + } + if (n) + _sendPrintStringToJava(env, info->contextObject, mid, "\n"); + return JS_TRUE; +} + +static JSBool +Version(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) +{ + if (argc > 0 && JSVAL_IS_INT(argv[0])) + *rval = INT_TO_JSVAL(JS_SetVersion(cx, JSVAL_TO_INT(argv[0]))); + else + *rval = INT_TO_JSVAL(JS_GetVersion(cx)); + return JS_TRUE; +} + +static JSBool +Load(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) +{ + uintN i; + JSString *str; + const char *filename; + + for (i = 0; i < argc; i++) { + str = JS_ValueToString(cx, argv[i]); + if (!str) + return JS_FALSE; + argv[i] = STRING_TO_JSVAL(str); + filename = JS_GetStringBytes(str); + + if(! _loadSingleFile(cx, obj, filename)) + return JS_FALSE; + } + return JS_TRUE; +} + +static JSFunctionSpec shell_functions[] = { + {"version", Version, 0}, + {"load", Load, 1}, + {"print", Print, 0}, + {0} +}; + +static void +my_ErrorReporter(JSContext *cx, const char *message, JSErrorReport *report) +{ + ContextInfo* info; + jmethodID mid; + jclass clazz; + JNIEnv* env; + + jobject msg = NULL; + jobject filename = NULL; + jobject lineBuf = NULL; + int lineno = 0; + int offset = 0; + + info = (ContextInfo*) JS_GetContextPrivate(cx); + ASSERT_RETURN_VOID(info); + + env = info->env; + ASSERT_RETURN_VOID(env); + + clazz = (*env)->GetObjectClass(env, info->contextObject); + ASSERT_RETURN_VOID(clazz); + + mid = (*env)->GetMethodID(env, clazz, "_reportError", + "(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;I)V"); + ASSERT_RETURN_VOID(mid); + + + if(message) + msg = (*env)->NewStringUTF(env, message); + + if(report) + { + lineno = report->lineno; + if(report->filename) + filename = (*env)->NewStringUTF(env, report->filename); + + if(report->linebuf) + { + lineBuf = (*env)->NewStringUTF(env, report->linebuf); + if(report->tokenptr) + offset = report->tokenptr - report->linebuf; + } + } + + (*env)->CallObjectMethod(env, info->contextObject, mid, + msg, filename, lineno, lineBuf, offset); + +} + +static JSClass global_class = { + "global", 0, + JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, + JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub +}; + +/* + * Class: com_netscape_nativejsengine_JSRuntime + * Method: _init + * Signature: (Z)Z + */ +JNIEXPORT jboolean JNICALL Java_com_netscape_nativejsengine_JSRuntime__1init + (JNIEnv * env, jobject self, jboolean enableDebugging) +{ + JSRuntime *rt; + jclass clazz; + jfieldID fid; + + rt = JS_NewRuntime(8L * 1024L * 1024L); + ASSERT_RETURN_VALUE(rt, JNI_FALSE); + + clazz = (*env)->GetObjectClass(env, self); + ASSERT_RETURN_VALUE(clazz, JNI_FALSE); + + fid = (*env)->GetFieldID(env, clazz, "_nativeRuntime", "J"); + ASSERT_RETURN_VALUE(fid, JNI_FALSE); + (*env)->SetLongField(env, self, fid, (long) rt); + + +#ifdef JSDEBUGGER + if(enableDebugging) + { + JSDJContext* jsdjc; + JSDContext* jsdc; + + jsdc = JSD_DebuggerOnForUser(rt, NULL, NULL); + ASSERT_RETURN_VALUE(jsdc, JNI_FALSE); + + jsdjc = JSDJ_CreateContext(); + ASSERT_RETURN_VALUE(jsdjc, JNI_FALSE); + + JSDJ_SetJSDContext(jsdjc, jsdc); + JSDJ_SetJNIEnvForCurrentThread(jsdjc, env); + + fid = (*env)->GetFieldID(env, clazz, "_nativeDebugSupport", "J"); + ASSERT_RETURN_VALUE(fid, JNI_FALSE); + (*env)->SetLongField(env, self, fid, (long) jsdjc); + } +#else + if(enableDebugging) + printf("ERROR - Context created with enableDebugging flag, but no debugging support compiled in!"); +#endif + + return JNI_TRUE; +} + +/* + * Class: com_netscape_nativejsengine_JSRuntime + * Method: _exit + * Signature: ()V + */ +JNIEXPORT void JNICALL Java_com_netscape_nativejsengine_JSRuntime__1exit + (JNIEnv * env, jobject self) +{ + jfieldID fid; + jclass clazz; + JSRuntime *rt; + JSContext *iterp = NULL; + + clazz = (*env)->GetObjectClass(env, self); + ASSERT_RETURN_VOID(clazz); + + fid = (*env)->GetFieldID(env, clazz, "_nativeRuntime", "J"); + ASSERT_RETURN_VOID(fid); + rt = (JSRuntime *) (*env)->GetLongField(env, self, fid); + ASSERT_RETURN_VOID(rt); + + + /* + * Can't kill runtime if it holds any contexts + * + * However, JSD may make it's own context(s), so don't ASSERT + */ + CHECK_RETURN_VOID(!JS_ContextIterator(rt, &iterp)); + + printf("runtime = %d\n", (int)rt); + + JS_DestroyRuntime(rt); +} + +/***************************************************************************/ + +/* + * Class: com_netscape_nativejsengine_JSContext + * Method: _init + * Signature: ()Z + */ +JNIEXPORT jboolean JNICALL Java_com_netscape_nativejsengine_JSContext__1init + (JNIEnv *env, jobject self) +{ + JSContext *cx; + JSObject *glob; + jfieldID fid; + jmethodID mid; + JSRuntime *rt; + jobject rtObject; + jclass clazz; + jclass clazz_self; + JSBool ok; + ContextInfo* info; + +#ifdef JSDEBUGGER + JSDJContext* jsdjc; +#endif + + clazz_self = (*env)->GetObjectClass(env, self); + ASSERT_RETURN_VALUE(clazz_self, JNI_FALSE); + + fid = (*env)->GetFieldID(env, clazz_self, "_runtime", + "Lcom/netscape/nativejsengine/JSRuntime;"); + ASSERT_RETURN_VALUE(fid, JNI_FALSE); + + rtObject = (*env)->GetObjectField(env, self, fid); + ASSERT_RETURN_VALUE(rtObject, JNI_FALSE); + + clazz = (*env)->GetObjectClass(env, rtObject); + ASSERT_RETURN_VALUE(clazz, JNI_FALSE); + + mid = (*env)->GetMethodID(env, clazz, "getNativeRuntime", "()J"); + ASSERT_RETURN_VALUE(mid, JNI_FALSE); + + rt = (JSRuntime *) (*env)->CallObjectMethod(env, rtObject, mid); + ASSERT_RETURN_VALUE(rt, JNI_FALSE); + + cx = JS_NewContext(rt, 8192); + ASSERT_RETURN_VALUE(cx, JNI_FALSE); + + JS_SetErrorReporter(cx, my_ErrorReporter); + + glob = JS_NewObject(cx, &global_class, NULL, NULL); + ASSERT_RETURN_VALUE(glob, JNI_FALSE); + + ok = JS_InitStandardClasses(cx, glob); + ASSERT_RETURN_VALUE(ok, JNI_FALSE); + + ok = JS_DefineFunctions(cx, glob, shell_functions); + ASSERT_RETURN_VALUE(ok, JNI_FALSE); + + fid = (*env)->GetFieldID(env, clazz_self, "_nativeContext", "J"); + ASSERT_RETURN_VALUE(fid, JNI_FALSE); + (*env)->SetLongField(env, self, fid, (long) cx); + + + info = (ContextInfo*) malloc(sizeof(ContextInfo)); + ASSERT_RETURN_VALUE(info, JNI_FALSE); + + info->env = env; + info->contextObject = self; + + JS_SetContextPrivate(cx, info); + +#ifdef JSDEBUGGER + mid = (*env)->GetMethodID(env, clazz, "getNativeDebugSupport", "()J"); + ASSERT_RETURN_VALUE(mid, JNI_FALSE); + + jsdjc = (JSDJContext*) (*env)->CallObjectMethod(env, rtObject, mid); + if(jsdjc) + { + JSDContext* jsdc = JSDJ_GetJSDContext(jsdjc); + ASSERT_RETURN_VALUE(jsdc, JNI_FALSE); + + JSDJ_SetJNIEnvForCurrentThread(jsdjc, env); + JSD_JSContextInUse(jsdc, cx); + } +#endif + + return JNI_TRUE; +} + +/* + * Class: com_netscape_nativejsengine_JSContext + * Method: _exit + * Signature: ()V + */ +JNIEXPORT void JNICALL Java_com_netscape_nativejsengine_JSContext__1exit + (JNIEnv *env, jobject self) +{ + jfieldID fid; + jclass clazz; + JSContext *cx; + ContextInfo* info; + + clazz = (*env)->GetObjectClass(env, self); + ASSERT_RETURN_VOID(clazz); + + fid = (*env)->GetFieldID(env, clazz, "_nativeContext", "J"); + ASSERT_RETURN_VOID(fid); + + cx = (JSContext *) (*env)->GetLongField(env, self, fid); + ASSERT_RETURN_VOID(cx); + + info = (ContextInfo*) JS_GetContextPrivate(cx); + ASSERT_RETURN_VOID(info); + free(info); + + printf("context = %d\n", (int)cx); + + JS_DestroyContext(cx); +} + +/* + * Class: com_netscape_nativejsengine_JSContext + * Method: _eval + * Signature: (Ljava/lang/String;)V + */ +JNIEXPORT void JNICALL Java_com_netscape_nativejsengine_JSContext__1eval + (JNIEnv * env, jobject self, jstring str, jstring filename, jint lineno) +{ + jfieldID fid; + jclass clazz_self; + JSContext *cx; + JSObject *glob; + jsval rval; + int len; + const char* Cstr; + const char* Cfilename; + jboolean isCopy; + + clazz_self = (*env)->GetObjectClass(env, self); + ASSERT_RETURN_VOID(clazz_self); + + fid = (*env)->GetFieldID(env, clazz_self, "_nativeContext", "J"); + ASSERT_RETURN_VOID(fid); + + cx = (JSContext *) (*env)->GetLongField(env, self, fid); + ASSERT_RETURN_VOID(cx); + + glob = JS_GetGlobalObject(cx); + ASSERT_RETURN_VOID(glob); + + len = (*env)->GetStringUTFLength(env, str); + Cstr = (*env)->GetStringUTFChars(env, str, &isCopy); + Cfilename = (*env)->GetStringUTFChars(env, filename, &isCopy); + +#ifdef JSDEBUGGER + /* + * XXX this just overwrites any previous source for this url! + */ + _jamSourceIntoJSD(cx, Cstr, len, Cfilename); +#endif + + JS_EvaluateScript(cx, glob, Cstr, len, Cfilename, lineno, &rval); + + (*env)->ReleaseStringUTFChars(env, str, Cstr); + (*env)->ReleaseStringUTFChars(env, filename, Cfilename); +} + +/* + * Class: com_netscape_nativejsengine_JSContext + * Method: _load + * Signature: (Ljava/lang/String;)V + */ +JNIEXPORT void JNICALL Java_com_netscape_nativejsengine_JSContext__1load + (JNIEnv *env, jobject self, jstring filename) +{ + jfieldID fid; + jclass clazz; + JSContext *cx; + const char* Cfilename; + jboolean isCopy; + JSObject *glob; + + clazz = (*env)->GetObjectClass(env, self); + ASSERT_RETURN_VOID(clazz); + + fid = (*env)->GetFieldID(env, clazz, "_nativeContext", "J"); + ASSERT_RETURN_VOID(fid); + + cx = (JSContext *) (*env)->GetLongField(env, self, fid); + ASSERT_RETURN_VOID(cx); + + glob = JS_GetGlobalObject(cx); + ASSERT_RETURN_VOID(glob); + + Cfilename = (*env)->GetStringUTFChars(env, filename, &isCopy); + + _loadSingleFile(cx, glob, Cfilename); + + (*env)->ReleaseStringUTFChars(env, filename, Cfilename); +} diff --git a/mozilla/js/jsd/jsd.mak b/mozilla/js/jsd/jsd.mak index 81147ce649d..4faafabfa53 100644 --- a/mozilla/js/jsd/jsd.mak +++ b/mozilla/js/jsd/jsd.mak @@ -1,14 +1,22 @@ PROJ = jsd JSD = . +JS = $(JSD)\..\src +JSPROJ = js32 + +!IF "$(BUILD_OPT)" != "" +OBJ = Release +CC_FLAGS = /DNDEBUG +!ELSE OBJ = Debug -RUN = Run -JSSRC = $(JSD)\..\src -JSSRCPROJ = js32 -JSSRCOBJ = $(JSSRC)\$(OBJ) +CC_FLAGS = /DDEBUG +LINK_FLAGS = /DEBUG +!ENDIF + +QUIET=@ CFLAGS = /nologo /MDd /W3 /Gm /GX /Zi /Od\ - /I $(JSSRC)\ + /I $(JS)\ /I $(JSD)\ /DDEBUG /DWIN32 /D_CONSOLE /DXP_PC /D_WINDOWS /D_WIN32\ /DJSDEBUGGER\ @@ -16,12 +24,13 @@ CFLAGS = /nologo /MDd /W3 /Gm /GX /Zi /Od\ /DJSD_THREADSAFE\ !ENDIF /DEXPORT_JSD_API\ + $(CC_FLAGS)\ /c /Fp$(OBJ)\$(PROJ).pch /Fd$(OBJ)\$(PROJ).pdb /YX -Fo$@ $< -LFLAGS = /nologo /subsystem:console /DLL /incremental:no /machine:I386 /DEBUG\ - /pdb:$(OBJ)\$(PROJ).pdb -out:$(OBJ)\$(PROJ).dll +LFLAGS = /nologo /subsystem:console /DLL /incremental:no /machine:I386 \ + $(LINK_FLAGS) /pdb:$(OBJ)\$(PROJ).pdb -out:$(OBJ)\$(PROJ).dll -LLIBS = kernel32.lib advapi32.lib $(JSSRCOBJ)\$(JSSRCPROJ).lib +LLIBS = kernel32.lib advapi32.lib $(JS)\$(OBJ)\$(JSPROJ).lib # unused... user32.lib gdi32.lib winspool.lib comdlg32.lib shell32.lib CPP=cl.exe @@ -40,19 +49,20 @@ $(OBJ)\$(PROJ).dll: \ $(OBJ)\jsd_text.obj \ $(OBJ)\jsd_lock.obj \ $(OBJ)\jsd_val.obj - $(LINK32) $(LFLAGS) $** $(LLIBS) + $(QUIET)$(LINK32) $(LFLAGS) $** $(LLIBS) {$(JSD)}.c{$(OBJ)}.obj : - $(CPP) $(CFLAGS) + $(QUIET)$(CPP) $(CFLAGS) $(OBJ) : - mkdir $(OBJ) + $(QUIET)mkdir $(OBJ) clean: - del $(OBJ)\*.pch - del $(OBJ)\*.obj - del $(OBJ)\*.exp - del $(OBJ)\*.lib - del $(OBJ)\*.idb - del $(OBJ)\*.pdb - del $(OBJ)\*.dll + @echo deleting old output + $(QUIET)del $(OBJ)\*.pch >NUL + $(QUIET)del $(OBJ)\*.obj >NUL + $(QUIET)del $(OBJ)\*.exp >NUL + $(QUIET)del $(OBJ)\*.lib >NUL + $(QUIET)del $(OBJ)\*.idb >NUL + $(QUIET)del $(OBJ)\*.pdb >NUL + $(QUIET)del $(OBJ)\*.dll >NUL diff --git a/mozilla/js/jsd/jsdshell.mak b/mozilla/js/jsd/jsdshell.mak index cd5f0c562d9..f45f5633b08 100644 --- a/mozilla/js/jsd/jsdshell.mak +++ b/mozilla/js/jsd/jsdshell.mak @@ -1,127 +1,112 @@ PROJ = jsdshell JSD = . -JSDJAVA = $(JSD)\JAVA -JSSRC = $(JSD)\..\src -OBJ = Debug -RUN = Run - -JSDEBUGGER_JAVA_UI = 1 - -JSSRCPROJ = js32 -JSSRCOBJ = $(JSSRC)\$(OBJ) +JSDJAVA = $(JSD)\java +JS = $(JSD)\..\src +RUN = $(JSD)\run +JSPROJ = js32 JSDPROJ = jsd -JSDOBJ = $(OBJ) JSDJAVAPROJ = jsdjava -JSDJAVAOBJ = $(JSDJAVA)\$(OBJ) + +!IF "$(BUILD_OPT)" != "" +OPT = BUILD_OPT=1 +OBJ = Release +CC_FLAGS = /DNDEBUG +!ELSE +OPT = +OBJ = Debug +CC_FLAGS = /DDEBUG +LINK_FLAGS = /DEBUG +!ENDIF + +QUIET=@ CFLAGS = /nologo /MDd /W3 /Gm /GX /Zi /Od\ - /I $(JSSRC)\ + /I $(JS)\ /I $(JSD)\ - /I $(JSDJAVA)\ /DDEBUG /DWIN32 /D_CONSOLE /DXP_PC /D_WINDOWS /D_WIN32\ /DJSDEBUGGER\ !IF "$(JSDEBUGGER_JAVA_UI)" != "" + /I $(JSDJAVA)\ /DJSDEBUGGER_JAVA_UI\ /DJSD_STANDALONE_JAVA_VM\ !ENDIF /DJSD_LOWLEVEL_SOURCE\ /DJSFILE\ + $(CC_FLAGS)\ /c /Fp$(OBJ)\$(PROJ).pch /Fd$(OBJ)\$(PROJ).pdb /YX -Fo$@ $< -LFLAGS = /nologo /subsystem:console /incremental:no /machine:I386 /DEBUG\ - /pdb:$(OBJ)\$(PROJ).pdb -out:$(OBJ)\$(PROJ).exe +LFLAGS = /nologo /subsystem:console /incremental:no /machine:I386 \ + $(LINK_FLAGS) /pdb:$(OBJ)\$(PROJ).pdb -out:$(OBJ)\$(PROJ).exe LLIBS = kernel32.lib advapi32.lib \ - $(JSSRCOBJ)\$(JSSRCPROJ).lib \ - $(OBJ)\$(JSDPROJ).lib \ - $(JSDJAVAOBJ)\$(JSDJAVAPROJ).lib + $(JS)\$(OBJ)\$(JSPROJ).lib \ + $(JSD)\$(OBJ)\$(JSDPROJ).lib \ + $(JSDJAVA)\$(OBJ)\$(JSDJAVAPROJ).lib CPP=cl.exe LINK32=link.exe -all: $(OBJ) $(RUN) \ - $(RUN)\$(JSSRCPROJ).dll $(RUN)\$(JSSRCPROJ).pdb \ - $(RUN)\$(JSDPROJ).dll $(RUN)\$(JSDPROJ).pdb \ - $(JSDJAVAOBJ)\$(JSDJAVAPROJ).lib $(RUN)\$(JSDJAVAPROJ).pdb \ - $(RUN)\$(PROJ).exe $(RUN)\$(PROJ).pdb +all: $(OBJ) $(RUN) dlls $(OBJ)\$(PROJ).exe copy_binaries $(OBJ)\$(PROJ).exe: \ $(OBJ)\js.obj - $(LINK32) $(LFLAGS) $** $(LLIBS) + $(QUIET)$(LINK32) $(LFLAGS) $** $(LLIBS) -$(JSSRCOBJ)\$(JSSRCPROJ).pdb : $(JSSRCOBJ)\$(JSSRCPROJ).dll -$(JSSRCOBJ)\$(JSSRCPROJ).lib : $(JSSRCOBJ)\$(JSSRCPROJ).dll +{$(JS)}.c{$(OBJ)}.obj : + $(QUIET)$(CPP) $(CFLAGS) -$(JSSRCOBJ)\$(JSSRCPROJ).dll : - @cd ..\src - @nmake -f js.mak CFG="js - Win32 Debug" - @cd ..\jsd +dlls : + $(QUIET)cd ..\src +!IF "$(BUILD_OPT)" != "" + $(QUIET)nmake -f js.mak CFG="js - Win32 Release" +!ELSE + $(QUIET)nmake -f js.mak CFG="js - Win32 Debug" +!ENDIF + $(QUIET)cd ..\jsd + $(QUIET)nmake -f jsd.mak JSD_THREADSAFE=1 $(OPT) + $(QUIET)cd java + $(QUIET)nmake -f jsdjava.mak JSD_STANDALONE_JAVA_VM=1 $(OPT) + $(QUIET)cd .. -$(JSDOBJ)\$(JSDPROJ).pdb : $(JSDOBJ)\$(JSDPROJ).dll - -$(JSDOBJ)\$(JSDPROJ).lib : $(JSDOBJ)\$(JSDPROJ).dll - -$(JSDOBJ)\$(JSDPROJ).dll : - @nmake -f jsd.mak JSD_THREADSAFE=1 - -$(JSDJAVAOBJ)\$(JSDJAVAPROJ).pdb : $(JSDJAVAOBJ)\$(JSDJAVAPROJ).lib - -$(JSDJAVAOBJ)\$(JSDJAVAPROJ).lib : - @cd java - @nmake -f jsdjava.mak JSD_STANDALONE_JAVA_VM=1 - @cd .. - -{$(JSSRC)}.c{$(OBJ)}.obj : - $(CPP) $(CFLAGS) +copy_binaries : + @echo copying binaries + $(QUIET)copy $(JS)\$(OBJ)\$(JSPROJ).dll $(RUN) >NUL + $(QUIET)copy $(JS)\$(OBJ)\$(JSPROJ).pdb $(RUN) >NUL + $(QUIET)copy $(JSD)\$(OBJ)\$(JSDPROJ).dll $(RUN) >NUL + $(QUIET)copy $(JSD)\$(OBJ)\$(JSDPROJ).pdb $(RUN) >NUL + $(QUIET)copy $(JSDJAVA)\$(OBJ)\$(JSDJAVAPROJ).dll $(RUN) >NUL + $(QUIET)copy $(JSDJAVA)\$(OBJ)\$(JSDJAVAPROJ).pdb $(RUN) >NUL + $(QUIET)copy $(OBJ)\$(PROJ).pdb $(RUN) >NUL + $(QUIET)copy $(OBJ)\$(PROJ).exe $(RUN) >NUL $(OBJ) : - mkdir $(OBJ) + $(QUIET)mkdir $(OBJ) $(RUN) : - mkdir $(RUN) - -$(RUN)\$(PROJ).exe: $(OBJ)\$(PROJ).exe - copy $(OBJ)\$(PROJ).exe $(RUN) - -$(RUN)\$(PROJ).pdb: $(OBJ)\$(PROJ).pdb - copy $(OBJ)\$(PROJ).pdb $(RUN) - -$(RUN)\$(JSSRCPROJ).dll : $(JSSRCOBJ)\$(JSSRCPROJ).dll - copy $(JSSRCOBJ)\$(JSSRCPROJ).dll $(RUN) - -$(RUN)\$(JSSRCPROJ).pdb : $(JSSRCOBJ)\$(JSSRCPROJ).pdb - copy $(JSSRCOBJ)\$(JSSRCPROJ).pdb $(RUN) - -$(RUN)\$(JSDPROJ).dll : $(JSDOBJ)\$(JSDPROJ).dll - copy $(JSDOBJ)\$(JSDPROJ).dll $(RUN) - -$(RUN)\$(JSDPROJ).pdb : $(JSDOBJ)\$(JSDPROJ).pdb - copy $(JSDOBJ)\$(JSDPROJ).pdb $(RUN) - -$(RUN)\$(JSDJAVAPROJ).pdb : $(JSDJAVAOBJ)\$(JSDJAVAPROJ).pdb - copy $(JSDJAVAOBJ)\$(JSDJAVAPROJ).pdb $(RUN) - + $(QUIET)mkdir $(RUN) clean: - del $(OBJ)\*.pch - del $(OBJ)\*.obj - del $(OBJ)\*.exp - del $(OBJ)\*.lib - del $(OBJ)\*.dll - del $(OBJ)\*.idb - del $(OBJ)\*.pdb - del $(OBJ)\*.exe - del $(RUN)\*.pdb - del $(RUN)\*.exe - del $(RUN)\*.dll + @echo deleting old output + $(QUIET)del $(OBJ)\js.obj >NUL + $(QUIET)del $(OBJ)\$(PROJ).pch >NUL + $(QUIET)del $(OBJ)\$(PROJ)*.idb >NUL + $(QUIET)del $(OBJ)\$(PROJ).pdb >NUL + $(QUIET)del $(OBJ)\$(PROJ).exe >NUL + $(QUIET)del $(RUN)\*.pdb >NUL + $(QUIET)del $(RUN)\*.exe >NUL + $(QUIET)del $(RUN)\*.dll >NUL deep_clean: clean - @cd ..\src - @nmake -f js.mak CFG="js - Win32 Debug" clean - @cd ..\jsd - @nmake -f jsd.mak clean - @cd java - @nmake -f jsdjava.mak clean - @cd .. + $(QUIET)cd ..\src +!IF "$(BUILD_OPT)" != "" + $(QUIET)nmake -f js.mak CFG="js - Win32 Release" clean +!ELSE + $(QUIET)nmake -f js.mak CFG="js - Win32 Debug" clean +!ENDIF + $(QUIET)cd ..\jsd + $(QUIET)nmake -f jsd.mak clean + $(QUIET)cd java + $(QUIET)nmake -f jsdjava.mak clean + $(QUIET)cd .. diff --git a/mozilla/js/jsd/mkshell.bat b/mozilla/js/jsd/mkshell.bat index b661f24b52a..c7891913b17 100755 --- a/mozilla/js/jsd/mkshell.bat +++ b/mozilla/js/jsd/mkshell.bat @@ -1,5 +1,4 @@ @echo off REM nmake -f jsdshell.mak JSDEBUGGER_JAVA_UI=1 LIVECONNECT=1 %1 %2 %3 %4 %5 -REM nmake -f jsdshell.mak JSDEBUGGER_JAVA_UI=1 %1 %2 %3 %4 %5 @echo on -nmake -f jsdshell.mak %1 %2 %3 %4 %5 \ No newline at end of file +nmake -f jsdshell.mak JSDEBUGGER_JAVA_UI=1 %1 %2 %3 %4 %5