RPA Toolkit
Added windows build for rvm, rpa libraries.
authorMartin Stoilov <martin@rpasearch.com>
Sat, 9 Jul 2011 06:03:11 +0000 (23:03 -0700)
committerMartin Stoilov <martin@rpasearch.com>
Sat, 9 Jul 2011 06:03:11 +0000 (23:03 -0700)
arch/windows/i386/rtypes.h
rpa/build/windows/i386/makefile [new file with mode: 0644]
rpa/rpadbex.h
rvm/build/windows/i386/makefile [new file with mode: 0644]
rvm/rvmoperatorbin.c
rvm/rvmreg.h

index 0a548e9..06dc8d8 100644 (file)
@@ -55,7 +55,7 @@ typedef struct {ruint32 p1; ruint32 p2;} rpair_t;
                do { } while (0)
 
 
-#define R_DEBUG_BRAKE __asm__ ("int $3")
+#define R_DEBUG_BRAKE do { __asm int 3 } while (0)
 #define R_ASSERT(__a__) do {if (!(__a__)) R_DEBUG_BRAKE; } while (0)
 #define R_SIZE_ALIGN(s, n) ((((s) + (n) - 1) / (n)) * (n))
 #define R_MIN(a, b) ((a) < (b) ? (a): (b))
diff --git a/rpa/build/windows/i386/makefile b/rpa/build/windows/i386/makefile
new file mode 100644 (file)
index 0000000..5b9c5d3
--- /dev/null
@@ -0,0 +1,118 @@
+
+!IF "$(CFG)" == ""
+CFG=debug
+!ENDIF 
+
+!IF "$(CFG)" != "release" && "$(CFG)" != "debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE nmake /f makefile CFG=debug
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "release" ( Win32 x86 release build )
+!MESSAGE "debug"   ( Win32 x86 debug build)
+!MESSAGE 
+!ERROR An invalid configuration is specified.
+!ENDIF 
+
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE 
+NULL=nul
+!ENDIF
+
+
+TARGET=rpa.lib
+PORT=windows
+SRC_DIR=..\..\..
+RPATK_DIR=..\..\..\..
+INCLUDE_DIRS=/I"$(RPATK_DIR)" /I"$(RPATK_DIR)\arch\$(PORT)\i386"
+
+
+!IF "$(CFG)" == "release"
+
+OUTDIR=.\out
+CPP_FLAGS=/nologo $(INCLUDE_DIRS) /Zp1 /W3 /EHsc /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Fo"$(OUTDIR)\\" /FD /c 
+
+!ELSEIF  "$(CFG)" == "debug"
+
+OUTDIR=.\out
+CPP_FLAGS=/nologo $(INCLUDE_DIRS) /Zp1 /Zi /W3 /EHsc  /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Fo"$(OUTDIR)\\" /FD  /c
+
+!ENDIF
+
+CPP_FLAGS=$(CPP_FLAGS) $(MCS_CFLAGS)
+
+!IF "$(DBG_CONSOLE)" == "shut"
+CPP_FLAGS=$(CPP_FLAGS) /D "_SHUT_CONSOLE"
+!ENDIF
+
+
+CPP=cl.exe
+LINK32=lib.exe
+LINK32_FLAGS=/nologo /machine:I386 /out:"$(OUTDIR)\$(TARGET)"
+# LINK32=link.exe
+# LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /subsystem:console /incremental:no /machine:I386 /out:"$(OUTDIR)\$(TARGET)" 
+LINK32_OBJS= \
+       "$(OUTDIR)\rpacache.obj" \
+       "$(OUTDIR)\rpadbex.obj" \
+       "$(OUTDIR)\rpastat.obj" \
+       "$(OUTDIR)\rparecord.obj" \
+       "$(OUTDIR)\rpavm.obj" \
+       "$(OUTDIR)\rpacompiler.obj" \
+       "$(OUTDIR)\rpaparser.obj" \
+       "$(OUTDIR)\rpaoptimization.obj" \
+
+
+ALL : "$(OUTDIR)\$(TARGET)"
+
+CLEAN :
+       -@erase "$(OUTDIR)\$(TARGET)"
+       -@erase $(LINK32_OBJS)
+       -@erase *.pdb *.idb *.pch
+       -@rd /S /Q "$(OUTDIR)"
+
+"$(OUTDIR)" :
+       if not exist "$(OUTDIR)\$(NULL)" mkdir "$(OUTDIR)"
+
+
+"$(OUTDIR)\$(TARGET)" : "$(OUTDIR)" $(LINK32_OBJS)
+       $(LINK32) @<<
+       $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(SRC_DIR)\rpacache.c"
+"$(OUTDIR)\rpacache.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rpadbex.c"
+"$(OUTDIR)\rpadbex.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rpastat.c"
+"$(OUTDIR)\rpastat.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rparecord.c"
+"$(OUTDIR)\rparecord.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rpavm.c"
+"$(OUTDIR)\rpavm.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rpacompiler.c"
+"$(OUTDIR)\rpacompiler.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rpaparser.c"
+"$(OUTDIR)\rpaparser.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rpaoptimization.c"
+"$(OUTDIR)\rpaoptimization.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
index 5d52bed..26d3dce 100644 (file)
@@ -87,7 +87,7 @@ rpadbex_t *rpa_dbex_create(void);
 
 
 /**
- * @brief Destoies an object of type rpadbex_t, created by @ref rpa_dbex_create.
+ * @brief Destroy an object of type rpadbex_t, created by @ref rpa_dbex_create.
  *
  * Use this function to destroy the object. After this call the pointer to dbex should never be used again.
  *
diff --git a/rvm/build/windows/i386/makefile b/rvm/build/windows/i386/makefile
new file mode 100644 (file)
index 0000000..f9d7380
--- /dev/null
@@ -0,0 +1,244 @@
+
+!IF "$(CFG)" == ""
+CFG=debug
+!ENDIF 
+
+!IF "$(CFG)" != "release" && "$(CFG)" != "debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE nmake /f makefile CFG=debug
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "release" ( Win32 x86 release build )
+!MESSAGE "debug"   ( Win32 x86 debug build)
+!MESSAGE 
+!ERROR An invalid configuration is specified.
+!ENDIF 
+
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE 
+NULL=nul
+!ENDIF
+
+
+TARGET=rvm.lib
+PORT=windows
+SRC_DIR=..\..\..
+RPATK_DIR=..\..\..\..
+INCLUDE_DIRS=/I"$(RPATK_DIR)" /I"$(RPATK_DIR)\arch\$(PORT)\i386"
+
+
+!IF "$(CFG)" == "release"
+
+OUTDIR=.\out
+CPP_FLAGS=/nologo $(INCLUDE_DIRS) /Zp1 /W3 /EHsc /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Fo"$(OUTDIR)\\" /FD /c 
+
+!ELSEIF  "$(CFG)" == "debug"
+
+OUTDIR=.\out
+CPP_FLAGS=/nologo $(INCLUDE_DIRS) /Zp1 /Zi /W3 /EHsc  /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Fo"$(OUTDIR)\\" /FD  /c
+
+!ENDIF
+
+CPP_FLAGS=$(CPP_FLAGS) $(MCS_CFLAGS)
+
+!IF "$(DBG_CONSOLE)" == "shut"
+CPP_FLAGS=$(CPP_FLAGS) /D "_SHUT_CONSOLE"
+!ENDIF
+
+
+CPP=cl.exe
+LINK32=lib.exe
+LINK32_FLAGS=/nologo /machine:I386 /out:"$(OUTDIR)\$(TARGET)"
+# LINK32=link.exe
+# LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /subsystem:console /incremental:no /machine:I386 /out:"$(OUTDIR)\$(TARGET)" 
+LINK32_OBJS= \
+       "$(OUTDIR)\rvmoperator.obj" \
+       "$(OUTDIR)\rvmcodemap.obj" \
+       "$(OUTDIR)\rvmrelocmap.obj" \
+       "$(OUTDIR)\rvmcodegen.obj" \
+       "$(OUTDIR)\rvmreg.obj" \
+       "$(OUTDIR)\rvmscope.obj" \
+       "$(OUTDIR)\rvmoperatorbin.obj" \
+       "$(OUTDIR)\rvmoperatoradd.obj" \
+       "$(OUTDIR)\rvmoperatorand.obj" \
+       "$(OUTDIR)\rvmoperatoreq.obj" \
+       "$(OUTDIR)\rvmoperatornoteq.obj" \
+       "$(OUTDIR)\rvmoperatorlogicor.obj" \
+       "$(OUTDIR)\rvmoperatorlogicand.obj" \
+       "$(OUTDIR)\rvmoperatorlogicnot.obj" \
+       "$(OUTDIR)\rvmoperatorless.obj" \
+       "$(OUTDIR)\rvmoperatorlesseq.obj" \
+       "$(OUTDIR)\rvmoperatorgreater.obj" \
+       "$(OUTDIR)\rvmoperatorgreatereq.obj" \
+       "$(OUTDIR)\rvmoperatorxor.obj" \
+       "$(OUTDIR)\rvmoperatoror.obj" \
+       "$(OUTDIR)\rvmoperatorcmp.obj" \
+       "$(OUTDIR)\rvmoperatorcmn.obj" \
+       "$(OUTDIR)\rvmoperatorlsl.obj" \
+       "$(OUTDIR)\rvmoperatorlsr.obj" \
+       "$(OUTDIR)\rvmoperatorlsru.obj" \
+       "$(OUTDIR)\rvmoperatorcast.obj" \
+       "$(OUTDIR)\rvmoperatorcat.obj" \
+       "$(OUTDIR)\rvmoperatorsub.obj" \
+       "$(OUTDIR)\rvmoperatormul.obj" \
+       "$(OUTDIR)\rvmoperatordiv.obj" \
+       "$(OUTDIR)\rvmoperatormod.obj" \
+       "$(OUTDIR)\rvmoperatornot.obj" \
+       "$(OUTDIR)\rvmcpu.obj" \
+
+
+ALL : "$(OUTDIR)\$(TARGET)"
+
+CLEAN :
+       -@erase "$(OUTDIR)\$(TARGET)"
+       -@erase $(LINK32_OBJS)
+       -@erase *.pdb *.idb *.pch
+       -@rd /S /Q "$(OUTDIR)"
+
+"$(OUTDIR)" :
+       if not exist "$(OUTDIR)\$(NULL)" mkdir "$(OUTDIR)"
+
+
+"$(OUTDIR)\$(TARGET)" : "$(OUTDIR)" $(LINK32_OBJS)
+       $(LINK32) @<<
+       $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(SRC_DIR)\rvmcpu.c"
+"$(OUTDIR)\rvmcpu.obj" : $(SOURCE) $(OUTDIR)
+       $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rvmoperator.c"
+"$(OUTDIR)\rvmoperator.obj" : $(SOURCE) $(OUTDIR)
+       $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rvmcodemap.c"
+"$(OUTDIR)\rvmcodemap.obj" : $(SOURCE) $(OUTDIR)
+       $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rvmrelocmap.c"
+"$(OUTDIR)\rvmrelocmap.obj" : $(SOURCE) $(OUTDIR)
+       $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rvmcodegen.c"
+"$(OUTDIR)\rvmcodegen.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rvmreg.c"
+"$(OUTDIR)\rvmreg.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rvmscope.c"
+"$(OUTDIR)\rvmscope.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rvmoperatorbin.c"
+"$(OUTDIR)\rvmoperatorbin.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rvmoperatoradd.c"
+"$(OUTDIR)\rvmoperatoradd.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rvmoperatorand.c"
+"$(OUTDIR)\rvmoperatorand.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rvmoperatoreq.c"
+"$(OUTDIR)\rvmoperatoreq.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rvmoperatornoteq.c"
+"$(OUTDIR)\rvmoperatornoteq.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rvmoperatorlogicor.c"
+"$(OUTDIR)\rvmoperatorlogicor.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rvmoperatorlogicand.c"
+"$(OUTDIR)\rvmoperatorlogicand.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rvmoperatorlogicnot.c"
+"$(OUTDIR)\rvmoperatorlogicnot.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rvmoperatorless.c"
+"$(OUTDIR)\rvmoperatorless.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rvmoperatorlesseq.c"
+"$(OUTDIR)\rvmoperatorlesseq.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rvmoperatorgreater.c"
+"$(OUTDIR)\rvmoperatorgreater.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rvmoperatorgreatereq.c"
+"$(OUTDIR)\rvmoperatorgreatereq.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rvmoperatorxor.c"
+"$(OUTDIR)\rvmoperatorxor.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rvmoperatoror.c"
+"$(OUTDIR)\rvmoperatoror.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rvmoperatorcmp.c"
+"$(OUTDIR)\rvmoperatorcmp.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rvmoperatorcmn.c"
+"$(OUTDIR)\rvmoperatorcmn.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rvmoperatorlsl.c"
+"$(OUTDIR)\rvmoperatorlsl.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rvmoperatorlsr.c"
+"$(OUTDIR)\rvmoperatorlsr.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rvmoperatorlsru.c"
+"$(OUTDIR)\rvmoperatorlsru.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rvmoperatorcast.c"
+"$(OUTDIR)\rvmoperatorcast.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rvmoperatorcat.c"
+"$(OUTDIR)\rvmoperatorcat.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rvmoperatorsub.c"
+"$(OUTDIR)\rvmoperatorsub.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rvmoperatormul.c"
+"$(OUTDIR)\rvmoperatormul.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rvmoperatordiv.c"
+"$(OUTDIR)\rvmoperatordiv.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rvmoperatormod.c"
+"$(OUTDIR)\rvmoperatormod.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\rvmoperatornot.c"
+"$(OUTDIR)\rvmoperatornot.obj" : $(SOURCE) $(OUTDIR)
+    $(CPP) $(CPP_FLAGS) $(SOURCE)
+
index dc7cf46..43987cb 100644 (file)
@@ -66,19 +66,19 @@ static void rvm_op_abort_double(rvmcpu_t *cpu, rushort opid, rvmreg_t *res, rdou
 }
 
 
-inline void rvm_op_binary_unsigned(rvmcpu_t *cpu, rushort opid, rvmreg_t *res, rword op1, rword op2)
+static void rvm_op_binary_unsigned(rvmcpu_t *cpu, rushort opid, rvmreg_t *res, rword op1, rword op2)
 {
        binary_operations[opid].unsigned_binop_fun(cpu, opid, res, op1, op2);
 }
 
 
-inline void rvm_op_binary_long(rvmcpu_t *cpu, rushort opid, rvmreg_t *res, rlong op1, rlong op2)
+static void rvm_op_binary_long(rvmcpu_t *cpu, rushort opid, rvmreg_t *res, rlong op1, rlong op2)
 {
        binary_operations[opid].long_binop_fun(cpu, opid, res, op1, op2);
 }
 
 
-inline void rvm_op_binary_double(rvmcpu_t *cpu, rushort opid, rvmreg_t *res, rdouble op1, rdouble op2)
+static void rvm_op_binary_double(rvmcpu_t *cpu, rushort opid, rvmreg_t *res, rdouble op1, rdouble op2)
 {
        binary_operations[opid].double_binop_fun(cpu, opid, res, op1, op2);
 }
index 9d2b46f..c46d883 100644 (file)
@@ -65,7 +65,7 @@ extern "C" {
 #define RVM_CPUREG_R_PTR(__cpu__, __r__) (&(__cpu__)->r[(__r__)])
 #define RVM_CPUREG_PTR(__cpu__, __r__) RVM_CPUREG_R_PTR(__cpu__, __r__)
 #define RVM_CPUREG_GET(__cpu__, __r__) *(RVM_CPUREG_PTR(__cpu__, __r__))
-#define RVM_CPUREG_SET(__cpu__, __r__, __val__) do { *(RVM_CPUREG_PTR(__cpu__, __r__)) = (rvmreg_t)(__val__); } while (0)
+#define RVM_CPUREG_SET(__cpu__, __r__, __val__) do { *(RVM_CPUREG_PTR(__cpu__, __r__)) = (__val__); } while (0)
 
 #define RVM_REG_GETTYPE(__r__) (__r__)->type
 #define RVM_REG_SETTYPE(__r__, __val__) do { (__r__)->type = (__val__); } while(0);
@@ -135,7 +135,7 @@ extern "C" {
 
 
 
-#define RVM_MIN_REGSIZE (sizeof(rword)/8)
+#define RVM_MIN_REGSIZE (sizeof(rword))
 
 typedef ruint16 rvmreg_type_t;
 typedef ruint16 rvmreg_flags_t;