RPA Toolkit
Fixed windows build.
authorMartin Stoilov <martin@rpasearch.com>
Wed, 22 Feb 2012 10:17:51 +0000 (02:17 -0800)
committerMartin Stoilov <martin@rpasearch.com>
Wed, 22 Feb 2012 10:17:51 +0000 (02:17 -0800)
build/windows/i386/makefile
build/windows/x64/makefile
rex/rexdfa.h
rex/rexstate.h
rexcc/build/windows/i386/makefile [new file with mode: 0644]
rexcc/build/windows/x64/makefile [new file with mode: 0644]
rexcc/main.c
rexcc/rexcc.c
rexgrep/build/windows/i386/makefile
rexgrep/main.c
rexgrep/win32/rexgrepdep.c

index 1470179..b0c956d 100644 (file)
@@ -29,6 +29,8 @@ SUBPROJECTS= \
        $(RPATK_DIR)\rex\build\$(PORT)\$(ARCH)+ \
        $(RPATK_DIR)\rpagrep\build\$(PORT)\$(ARCH)+ \
        $(RPATK_DIR)\rjs\build\$(PORT)\$(ARCH)+ \
+       $(RPATK_DIR)\rexgrep\build\$(PORT)\$(ARCH)+ \
+       $(RPATK_DIR)\rexcc\build\$(PORT)\$(ARCH)+ \
 
 
 ALL : $(SUBPROJECTS)
index 2d4470a..a95a3ce 100644 (file)
@@ -30,6 +30,7 @@ SUBPROJECTS= \
        $(RPATK_DIR)\rpagrep\build\$(PORT)\$(ARCH)+ \
        $(RPATK_DIR)\rjs\build\$(PORT)\$(ARCH)+ \
        $(RPATK_DIR)\rexgrep\build\$(PORT)\$(ARCH)+ \
+       $(RPATK_DIR)\rexcc\build\$(PORT)\$(ARCH)+ \
 
 
 ALL : $(SUBPROJECTS)
index ccb79b8..4299fd8 100644 (file)
@@ -35,7 +35,7 @@ extern "C" {
 #endif
 
 #ifndef REX_USERDATA_TYPE
-typedef unsigned long rexuserdata_t;
+typedef size_t rexuserdata_t;
 #else
 typedef REX_USERDATA_TYPE rexuserdata_t;
 #endif
index ba0d3ca..dacf4ac 100644 (file)
@@ -47,7 +47,7 @@ struct rexstate_s {
 
 typedef struct rexsubstate_s {
        unsigned long ss_type;
-       unsigned long ss_userdata;
+       rexuserdata_t ss_userdata;
 } rexsubstate_t;
 
 typedef struct rex_accept_s {
diff --git a/rexcc/build/windows/i386/makefile b/rexcc/build/windows/i386/makefile
new file mode 100644 (file)
index 0000000..3f6783f
--- /dev/null
@@ -0,0 +1,95 @@
+!IF "$(BLDCFG)" == ""
+BLDCFG=debug
+!ENDIF 
+
+!IF "$(BLDCFG)" != "release" && "$(BLDCFG)" != "debug"
+!MESSAGE Invalid configuration "$(BLDCFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro BLDCFG on the command line. For example:
+!MESSAGE 
+!MESSAGE nmake /f makefile BLDCFG=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
+
+
+REXCC=rexcc.exe
+PORT=windows
+ARCH=i386
+SRC_DIR=..\..\..
+DEPSRC_DIR=..\..\..\win32
+RPATK_DIR=..\..\..\..
+REX_LIB="$(RPATK_DIR)\rex\build\$(PORT)\$(ARCH)\out\rex.lib"
+RLIB_LIB="$(RPATK_DIR)\rlib\build\$(PORT)\$(ARCH)\out\rlib.lib"
+INCLUDE_DIRS=/I"$(SRC_DIR)" /I"$(SRC_DIR)\win32" /I"$(RPATK_DIR)" /I"$(RPATK_DIR)\arch\$(PORT)\$(ARCH)"
+
+!IF "$(BLDCFG)" == "release"
+
+OUTDIR=.\out
+CPP_FLAGS=/nologo $(INCLUDE_DIRS) /Zp1 /ML /W3 /EHsc /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /Fo"$(OUTDIR)\\" /FD /c
+LINK_DEBUG=
+
+!ELSEIF  "$(BLDCFG)" == "debug"
+
+OUTDIR=.\out
+CPP_FLAGS=/nologo $(INCLUDE_DIRS) /Zp1 /MLd  /Zi /W3  /EHsc  /Od /D "WIN32" /D "_DEBUG" /D "DEBUG" /D "_CONSOLE" /YX /Fo"$(OUTDIR)\\" /FD  /c
+LINK_DEBUG=/DEBUG
+
+!ENDIF
+
+CPP_FLAGS=$(CPP_FLAGS)
+LIBS=$(REX_LIB) $(RLIB_LIB)
+
+CPP=cl.exe
+# LINK32=lib.exe
+# LINK32_FLAGS=/nologo /machine:I386 /out:"$(OUTDIR)\$(TARGET)"
+LINK32=link.exe
+LINK32_FLAGS=$(LIBS) 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 $(LINK_DEBUG)
+
+REXCC_OBJS= \
+       "$(OUTDIR)\main.obj" \
+       "$(OUTDIR)\rexcc.obj" \
+       "$(OUTDIR)\rexccdep.obj" \
+
+
+ALL : "$(OUTDIR)\$(REXCC)"
+
+CLEAN :
+       -@erase "$(OUTDIR)\$(REXCC)"
+       -@erase $(REXCC_OBJS)
+       -@erase *.pdb *.idb *.pch "$(OUTDIR)\*.pdb"
+       -@rd /S /Q "$(OUTDIR)"
+
+"$(OUTDIR)" :
+       if not exist "$(OUTDIR)\$(NULL)" mkdir "$(OUTDIR)"
+
+
+"$(OUTDIR)\$(REXCC)" : "$(OUTDIR)" $(REXCC_OBJS)
+       $(LINK32) @<<
+       $(LINK32_FLAGS) /out:"$(OUTDIR)\$(REXCC)" $(REXCC_OBJS)
+<<
+
+
+SOURCE="$(SRC_DIR)\rexcc.c"
+"$(OUTDIR)\rexcc.obj" : $(SOURCE) "$(OUTDIR)"
+       $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(DEPSRC_DIR)\rexccdep.c"
+"$(OUTDIR)\rexccdep.obj" : $(SOURCE) "$(OUTDIR)"
+       $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\main.c"
+"$(OUTDIR)\main.obj" : $(SOURCE) "$(OUTDIR)"
+       $(CPP) $(CPP_FLAGS) $(SOURCE)
diff --git a/rexcc/build/windows/x64/makefile b/rexcc/build/windows/x64/makefile
new file mode 100644 (file)
index 0000000..8c173c7
--- /dev/null
@@ -0,0 +1,95 @@
+!IF "$(BLDCFG)" == ""
+BLDCFG=debug
+!ENDIF 
+
+!IF "$(BLDCFG)" != "release" && "$(BLDCFG)" != "debug"
+!MESSAGE Invalid configuration "$(BLDCFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro BLDCFG on the command line. For example:
+!MESSAGE 
+!MESSAGE nmake /f makefile BLDCFG=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
+
+
+REXCC=rexcc.exe
+PORT=windows
+ARCH=x64
+SRC_DIR=..\..\..
+DEPSRC_DIR=..\..\..\win32
+RPATK_DIR=..\..\..\..
+REX_LIB="$(RPATK_DIR)\rex\build\$(PORT)\$(ARCH)\out\rex.lib"
+RLIB_LIB="$(RPATK_DIR)\rlib\build\$(PORT)\$(ARCH)\out\rlib.lib"
+INCLUDE_DIRS=/I"$(SRC_DIR)" /I"$(SRC_DIR)\win32" /I"$(RPATK_DIR)" /I"$(RPATK_DIR)\arch\$(PORT)\$(ARCH)"
+
+!IF "$(BLDCFG)" == "release"
+
+OUTDIR=.\out
+CPP_FLAGS=/nologo $(INCLUDE_DIRS) /Zp1 /ML /W3 /EHsc /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /Fo"$(OUTDIR)\\" /FD /c
+LINK_DEBUG=
+
+!ELSEIF  "$(BLDCFG)" == "debug"
+
+OUTDIR=.\out
+CPP_FLAGS=/nologo $(INCLUDE_DIRS) /Zp1 /MLd  /Zi /W3  /EHsc  /Od /D "WIN32" /D "_DEBUG" /D "DEBUG" /D "_CONSOLE" /YX /Fo"$(OUTDIR)\\" /FD  /c
+LINK_DEBUG=/DEBUG
+
+!ENDIF
+
+CPP_FLAGS=$(CPP_FLAGS)
+LIBS=$(REX_LIB) $(RLIB_LIB)
+
+CPP=cl.exe
+# LINK32=lib.exe
+# LINK32_FLAGS=/nologo /LTCG /out:"$(OUTDIR)\$(TARGET)"
+LINK32=link.exe
+LINK32_FLAGS=$(LIBS) 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 $(LINK_DEBUG)
+
+REXCC_OBJS= \
+       "$(OUTDIR)\main.obj" \
+       "$(OUTDIR)\rexcc.obj" \
+       "$(OUTDIR)\rexccdep.obj" \
+
+
+ALL : "$(OUTDIR)\$(REXCC)"
+
+CLEAN :
+       -@erase "$(OUTDIR)\$(REXCC)"
+       -@erase $(REXCC_OBJS)
+       -@erase *.pdb *.idb *.pch "$(OUTDIR)\*.pdb"
+       -@rd /S /Q "$(OUTDIR)"
+
+"$(OUTDIR)" :
+       if not exist "$(OUTDIR)\$(NULL)" mkdir "$(OUTDIR)"
+
+
+"$(OUTDIR)\$(REXCC)" : "$(OUTDIR)" $(REXCC_OBJS)
+       $(LINK32) @<<
+       $(LINK32_FLAGS) /out:"$(OUTDIR)\$(REXCC)" $(REXCC_OBJS)
+<<
+
+
+SOURCE="$(SRC_DIR)\rexcc.c"
+"$(OUTDIR)\rexcc.obj" : $(SOURCE) "$(OUTDIR)"
+       $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(DEPSRC_DIR)\rexccdep.c"
+"$(OUTDIR)\rexccdep.obj" : $(SOURCE) "$(OUTDIR)"
+       $(CPP) $(CPP_FLAGS) $(SOURCE)
+
+SOURCE="$(SRC_DIR)\main.c"
+"$(OUTDIR)\main.obj" : $(SOURCE) "$(OUTDIR)"
+       $(CPP) $(CPP_FLAGS) $(SOURCE)
index f8e6c1b..bd347e2 100644 (file)
 #include <string.h>
 #include <stdlib.h>
 #include <time.h>
-#include <errno.h>
 #include "rlib/rmem.h"
 #include "rlib/rarray.h"
 #include "rex/rexdfaconv.h"
 #include "rex/rexdfa.h"
-#include "rexcc.h"
 #include "rexccdep.h"
+#include "rexcc.h"
 
 
 int usage(int argc, const char *argv[])
@@ -98,8 +97,8 @@ rbuffer_t *rexcc_buffer_loadfile(FILE *pFile)
 
 int main(int argc, const char *argv[])
 {
-       int i, ret = 0, dumponly = 0;;
        rexcc_t *pCC;
+       int i, ret = 0, dumponly = 0;
        int withsubstates = 0;
        FILE *devnull = NULL;
        rexdb_t *tempdb = NULL;
index 655e173..013bd3f 100644 (file)
@@ -360,6 +360,8 @@ static int rex_cc_getlineno(rexcc_t *pCC, const char *input)
 
 int rex_cc_gettoken(rexcc_t *pCC)
 {
+       struct tokeninfo_s *ti = NULL;
+       struct tokeninfo_s *tk = tokens;
        ruint32 wc = 0;
        int inc, ret = 0;
        long nstate = REX_DFA_STARTSTATE;
@@ -384,8 +386,9 @@ int rex_cc_gettoken(rexcc_t *pCC)
                s = REX_DFA_STATE(dfa, nstate);
                ss = REX_DFA_ACCSUBSTATE(dfa, nstate, 0);
                if (s->type == REX_STATETYPE_ACCEPT) {
-                       pCC->token = ((struct tokeninfo_s *)ss->userdata)->id;
-                       ret = input - pCC->input;
+                       ti = (struct tokeninfo_s *)ss->userdata;
+                       pCC->token = ti->id;
+                       ret = (int)(input - pCC->input);
                        if (ss && ((struct tokeninfo_s *)ss->userdata)->id == 1) {
                                break;
                        }
@@ -471,7 +474,7 @@ int rex_cc_parse(rexcc_t *pCC)
                        return -1;
                }
                pCC->epilog.s = pCC->input;
-               pCC->epilog.size = pCC->end - pCC->input;
+               pCC->epilog.size = (long)(pCC->end - pCC->input);
        }
        return -1;
 }
index 8cd999c..156f9d1 100644 (file)
@@ -38,13 +38,13 @@ INCLUDE_DIRS=/I"$(SRC_DIR)" /I"$(SRC_DIR)\win32" /I"$(RPATK_DIR)" /I"$(RPATK_DIR
 !IF "$(BLDCFG)" == "release"
 
 OUTDIR=.\out
-CPP_FLAGS=/nologo $(INCLUDE_DIRS) /Zp1 /ML /W3 /EHsc /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /YX /Fo"$(OUTDIR)\\" /FD /c
+CPP_FLAGS=/nologo $(INCLUDE_DIRS) /Zp1 /ML /W3 /EHsc /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /Fo"$(OUTDIR)\\" /FD /c
 LINK_DEBUG=
 
 !ELSEIF  "$(BLDCFG)" == "debug"
 
 OUTDIR=.\out
-CPP_FLAGS=/nologo $(INCLUDE_DIRS) /Zp1 /MLd  /Zi /W3  /EHsc  /Od /D "WIN32" /D "_DEBUG" /D "DEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /YX /Fo"$(OUTDIR)\\" /FD  /c
+CPP_FLAGS=/nologo $(INCLUDE_DIRS) /Zp1 /MLd  /Zi /W3  /EHsc  /Od /D "WIN32" /D "_DEBUG" /D "DEBUG" /D "_CONSOLE" /YX /Fo"$(OUTDIR)\\" /FD  /c
 LINK_DEBUG=/DEBUG
 
 !ENDIF
@@ -95,6 +95,6 @@ SOURCE="$(DEPSRC_DIR)\fsenumwin.c"
 "$(OUTDIR)\fsenumwin.obj" : $(SOURCE) "$(OUTDIR)"
        $(CPP) $(CPP_FLAGS) $(SOURCE)
 
-SOURCE="$(DEPSRC_DIR)\main.c"
+SOURCE="$(SRC_DIR)\main.c"
 "$(OUTDIR)\main.obj" : $(SOURCE) "$(OUTDIR)"
        $(CPP) $(CPP_FLAGS) $(SOURCE)
index 709b131..6a892de 100644 (file)
@@ -21,6 +21,7 @@
 
 #include <string.h>
 #include <stdlib.h>
+#include <stdio.h>
 #include <time.h>
 #include "rlib/rmem.h"
 #include "rlib/rarray.h"
index de7dc92..85617e5 100644 (file)
@@ -20,7 +20,7 @@
 
 #include <windows.h>
 #include <stdio.h>
-#include <wchar.h>
+#include <tchar.h>
 #include "rlib/rbuffer.h"
 #include "rexgrep.h"
 #include "rexgrepdep.h"
@@ -97,7 +97,7 @@ void rex_grep_scan_path(rexgrep_t *pGrep, LPCTSTR path)
        if ((pFSE = fse_create(path))) {
        while (fse_next_file(pFSE)) {
                pGrep->filename = (void*)fseFileName(pFSE);
-               buf = rex_buffer_map_file((const wchar_t*)pGrep->filename);
+               buf = rex_buffer_map_file(pGrep->filename);
                if (buf) {
                                rex_grep_scan_buffer(pGrep, buf);
                                pGrep->scsize += buf->size;
@@ -107,7 +107,7 @@ void rex_grep_scan_path(rexgrep_t *pGrep, LPCTSTR path)
                fse_destroy(pFSE);
        } else {
                pGrep->filename = (void*)path;
-               buf = rex_buffer_map_file((const wchar_t*)pGrep->filename);
+               buf = rex_buffer_map_file(pGrep->filename);
                if (buf) {
                        rex_grep_scan_buffer(pGrep, buf);
                        pGrep->scsize += buf->size;