From fee77dd60ad849f9de1fb64e0e7bac87d838c441 Mon Sep 17 00:00:00 2001 From: Martin Stoilov Date: Wed, 6 Jul 2011 23:26:33 -0700 Subject: [PATCH] work on windows build --- arch/windows/i386/rtypes.h | 90 +++++++++++++++++++++ rlib/build/windows/i386/makefile | 163 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 253 insertions(+) create mode 100644 arch/windows/i386/rtypes.h create mode 100644 rlib/build/windows/i386/makefile diff --git a/arch/windows/i386/rtypes.h b/arch/windows/i386/rtypes.h new file mode 100644 index 0000000..0a548e9 --- /dev/null +++ b/arch/windows/i386/rtypes.h @@ -0,0 +1,90 @@ +#ifndef _RTYPES_H_ +#define _RTYPES_H_ + +/* + * Architecture dependent types. These types have to be redifined + * for every architecture + */ +typedef signed char rint8; +typedef unsigned char ruint8; +typedef signed short rint16; +typedef unsigned short ruint16; +typedef signed int rint32; +typedef unsigned int ruint32; +typedef signed long long rint64; +typedef unsigned long long ruint64; +typedef unsigned long rsize_t; +typedef signed long rssize_t; +typedef unsigned int ratomic_t; +typedef unsigned long rword; +typedef long rsword; + + +/* + * Common types. These types should be the same for most of the architectures. + */ +typedef long rlong; +typedef int rinteger; +typedef short rshort; +typedef char rchar; +typedef unsigned long rulong; +typedef unsigned int ruinteger; +typedef unsigned short rushort; +typedef unsigned char ruchar; +typedef ruchar rbyte; +typedef double rdouble; +typedef float rfloat; +typedef rinteger rboolean; +typedef void *rpointer; +typedef const void *rconstpointer; +typedef struct {ruint32 p1; ruint32 p2;} rpair_t; + +/* + * Atomic operations (Architecture Dependent) + */ +#define R_ATOMIC_CMPXCHG(ptr, oldval, newval, resptr) \ + do { } while (0) + +#define R_ATOMIC_XCHG(ptr, val) \ + do { } while (0) + +#define R_ATOMIC_ADD(ptr, val) \ + do { } while (0) + +#define R_ATOMIC_SUB(ptr, val) \ + do { } while (0) + + +#define R_DEBUG_BRAKE __asm__ ("int $3") +#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)) +#define R_MAX(a, b) ((a) > (b) ? (a): (b)) + +#ifndef NULL +#ifdef __cplusplus +#define NULL 0 +#else +#define NULL ((rpointer)0) +#endif +#endif + +#ifndef TRUE +#define TRUE ((rboolean)1) +#endif + +#ifndef FALSE +#define FALSE ((rboolean)0) +#endif + + +typedef enum { + RVALSET_NONE = 0, + RVALSET_OR, + RVALSET_XOR, + RVALSET_AND, +} rvalset_t; + + +#endif + diff --git a/rlib/build/windows/i386/makefile b/rlib/build/windows/i386/makefile new file mode 100644 index 0000000..5109b99 --- /dev/null +++ b/rlib/build/windows/i386/makefile @@ -0,0 +1,163 @@ + +!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=rlib.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 /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /Fo"$(OUTDIR)\\" /FD /c + +!ELSEIF "$(CFG)" == "debug" + +OUTDIR=.\out +CPP_FLAGS=/nologo $(INCLUDE_DIRS) /Zp1 /MLd /Zi /W3 /GX /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /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)\rref.obj" \ + "$(OUTDIR)\rcharconv.obj" \ + "$(OUTDIR)\robject.obj" \ + "$(OUTDIR)\rgc.obj" \ + "$(OUTDIR)\rmem.obj" \ + "$(OUTDIR)\rmath.obj" \ + "$(OUTDIR)\ratomic.obj" \ + "$(OUTDIR)\rspinlock.obj" \ + "$(OUTDIR)\rharray.obj" \ + "$(OUTDIR)\rcarray.obj" \ + "$(OUTDIR)\rarray.obj" \ + "$(OUTDIR)\rhash.obj" \ + "$(OUTDIR)\rmap.obj" \ + "$(OUTDIR)\rstring.obj" \ + "$(OUTDIR)\rlist.obj" \ + "$(OUTDIR)\rutf.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)\rref.c" +"$(OUTDIR)\rref.obj" : $(SOURCE) "$(OUTDIR)" + $(CPP) $(CPP_FLAGS) $(SOURCE) + +SOURCE="$(SRC_DIR)\rcharconv.c" +"$(OUTDIR)\rcharconv.obj" : $(SOURCE) "$(OUTDIR)" + $(CPP) $(CPP_FLAGS) $(SOURCE) + +SOURCE="$(SRC_DIR)\robject.c" +"$(OUTDIR)\robject.obj" : $(SOURCE) "$(OUTDIR)" + $(CPP) $(CPP_FLAGS) $(SOURCE) + +SOURCE="$(SRC_DIR)\rgc.c" +"$(OUTDIR)\rgc.obj" : $(SOURCE) "$(OUTDIR)" + $(CPP) $(CPP_FLAGS) $(SOURCE) + +SOURCE="$(SRC_DIR)\rmem.c" +"$(OUTDIR)\rmem.obj" : $(SOURCE) "$(OUTDIR)" + $(CPP) $(CPP_FLAGS) $(SOURCE) + +SOURCE="$(SRC_DIR)\rmath.c" +"$(OUTDIR)\rmath.obj" : $(SOURCE) "$(OUTDIR)" + $(CPP) $(CPP_FLAGS) $(SOURCE) + +SOURCE="$(SRC_DIR)\ratomic.c" +"$(OUTDIR)\ratomic.obj" : $(SOURCE) "$(OUTDIR)" + $(CPP) $(CPP_FLAGS) $(SOURCE) + +SOURCE="$(SRC_DIR)\rspinlock.c" +"$(OUTDIR)\rspinlock.obj" : $(SOURCE) "$(OUTDIR)" + $(CPP) $(CPP_FLAGS) $(SOURCE) + +SOURCE="$(SRC_DIR)\rharray.c" +"$(OUTDIR)\rharray.obj" : $(SOURCE) "$(OUTDIR)" + $(CPP) $(CPP_FLAGS) $(SOURCE) + +SOURCE="$(SRC_DIR)\rcarray.c" +"$(OUTDIR)\rcarray.obj" : $(SOURCE) "$(OUTDIR)" + $(CPP) $(CPP_FLAGS) $(SOURCE) + +SOURCE="$(SRC_DIR)\rarray.c" +"$(OUTDIR)\rarray.obj" : $(SOURCE) "$(OUTDIR)" + $(CPP) $(CPP_FLAGS) $(SOURCE) + + +SOURCE="$(SRC_DIR)\rhash.c" +"$(OUTDIR)\rhash.obj" : $(SOURCE) "$(OUTDIR)" + $(CPP) $(CPP_FLAGS) $(SOURCE) + + +SOURCE="$(SRC_DIR)\rmap.c" +"$(OUTDIR)\rmap.obj" : $(SOURCE) "$(OUTDIR)" + $(CPP) $(CPP_FLAGS) $(SOURCE) + + +SOURCE="$(SRC_DIR)\rstring.c" +"$(OUTDIR)\rstring.obj" : $(SOURCE) "$(OUTDIR)" + $(CPP) $(CPP_FLAGS) $(SOURCE) + + +SOURCE="$(SRC_DIR)\rlist.c" +"$(OUTDIR)\rlist.obj" : $(SOURCE) "$(OUTDIR)" + $(CPP) $(CPP_FLAGS) $(SOURCE) + +SOURCE="$(SRC_DIR)\rutf.c" +"$(OUTDIR)\rutf.obj" : $(SOURCE) "$(OUTDIR)" + $(CPP) $(CPP_FLAGS) $(SOURCE) + -- 1.7.9.5