1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* wince/ : files removed.

(config, dll.mak, exe.mak, mswince-ruby17.def,
            io.c, process.c, signal.c, string.c, time.c)

* wince/ : files added.
         (assert.c, Makefile.sub, mkexports.rb, io_wce.c,
            process_wce.c, signal_wce.c, string_wce.c,
            time_wce.c)

* wince/configure.bat : like mswin32 style.

* wince/direct.c : remove "static" at _currentdir.

* wince/io.h : change definition.

* wince/stdio.c : _fdopen -> fdopen.

* wince/process.h : add_P_OVERLAY.

* wince/time.h : change definition.

* wince/wincemain.c : add wce_SetCurrentDir.

* wince/wince.c : add wce_SetCurrentDir and wce_fopen.
	                  fix GetModuleFileNameA to return correct "lpFileName".

* wince/wince.h : remove #ifdef.

* wince/sys/utime.h, utime.c : rename _utime to utime.

* wince/sys/stat.c : expand relative directory in stat.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3734 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
uema2 2003-04-26 05:25:30 +00:00
parent 6068cd7540
commit 5f0df51865
30 changed files with 1355 additions and 3064 deletions

View file

@ -1,3 +1,37 @@
Sat Apr 26 14:25:00 2003 Takaaki Uematsu <uema2x@jcom.home.ne.jp>
* wince/ : files removed.
(config, dll.mak, exe.mak, mswince-ruby17.def,
io.c, process.c, signal.c, string.c, time.c)
* wince/ : files added.
(assert.c, Makefile.sub, mkexports.rb, io_wce.c,
process_wce.c, signal_wce.c, string_wce.c,
time_wce.c)
* wince/configure.bat : like mswin32 style.
* wince/direct.c : remove "static" at _currentdir.
* wince/io.h : change definition.
* wince/stdio.c : _fdopen -> fdopen.
* wince/process.h : add _P_OVERLAY.
* wince/time.h : change definition.
* wince/wincemain.c : add wce_SetCurrentDir.
* wince/wince.c : add wce_SetCurrentDir and wce_fopen.
fix GetModuleFileNameA to return correct "lpFileName".
* wince/wince.h : remove #ifdef.
* wince/sys/utime.h, utime.c : rename _utime to utime.
* wince/sys/stat.c : expand relative directory in stat.
Fri Apr 25 18:46:00 2003 Takaaki Uematsu <uema2x@jcom.home.ne.jp>
* gc.c: STACK_LEVEL_MAX=65535 on mswince.

692
wince/Makefile.sub Normal file
View file

@ -0,0 +1,692 @@
SHELL = $(COMSPEC)
#### Start of system configuration section. ####
## variables may be overridden by $(compile_dir)/Makefile
!ifndef srcdir
srcdir = ..
!endif
!ifndef RUBY_INSTALL_NAME
RUBY_INSTALL_NAME = ruby
!endif
!if !defined(RUBYW_INSTALL_NAME) || "$(RUBYW_INSTALL_NAME)" == "$(RUBY_INSTALL_NAME)"
RUBYW_INSTALL_NAME = $(RUBY_INSTALL_NAME:ruby=rubyw)
!endif
!if "$(RUBYW_INSTALL_NAME)" == "$(RUBY_INSTALL_NAME)"
RUBYW_INSTALL_NAME = $(RUBY_INSTALL_NAME)w
!endif
!if !defined(icondirs) && defined(ICONDIRS)
icondirs=$(ICONDIRS)
!endif
!if defined(icondirs)
icondirs=$(icondirs:\=/)
iconinc=-I$(icondirs: = -I)
!endif
###############
VPATH = $(srcdir):$(srcdir)/missing
.SUFFIXES: .y .def .lib
!if !defined(CC)
CC = cl
!endif
!if !defined(CPP)
CPP = $(CC) -E
!endif
!if !defined(YACC)
YACC = byacc
!endif
AR = lib -nologo
PURIFY =
AUTOCONF = autoconf
!if !defined(PROCESSOR_ARCHITECTURE)
PROCESSOR_ARCHITECTURE = x86
!endif
MACHINE = $(PROCESSOR_ARCHITECTURE)
!if "$(PROCESSOR_ARCHITECTURE)" == "x86"
!if !defined(PROCESSOR_LEVEL)
PROCESSOR_LEVEL = 5
!endif
!if 6 < $(PROCESSOR_LEVEL)
PROCESSOR_LEVEL = 6
!endif
PROCESSOR_FLAG = -G$(PROCESSOR_LEVEL)
CPU = i$(PROCESSOR_LEVEL)86
ARCH = i386
!else
CPU = $(PROCESSOR_ARCHITECTURE)
ARCH = $(PROCESSOR_ARCHITECTURE)
!endif
!if !defined(DEBUGFLAGS)
DEBUGFLAGS = -Zi
!endif
!if !defined(OPTFLAGS)
OPTFLAGS = -w -O2b2xg-
!endif
!ifndef OS
OS = mswin32
!endif
!ifndef RT
RT = msvcrt
!endif
!ifndef RUBY_SO_NAME
RUBY_SO_NAME = $(RT)-$(RUBY_INSTALL_NAME)$(MAJOR)$(MINOR)
!endif
!if !defined(prefix)
prefix = /usr
!endif
!if !defined(DESTDIR)
DESTDIR = $(prefix)
!endif
!if !defined(CFLAGS)
CFLAGS = $(DEBUGFLAGS) $(OPTFLAGS) $(PROCESSOR_FLAG)
!endif
!if !defined(CPPFLAGS)
CPPFLAGS = -I. -I$(srcdir) -I$(srcdir)/missing -I$(srcdir)/wince
!endif
!if !defined(XLDFLAGS)
XLDFLAGS =
!endif
!if !defined(RFLAGS)
RFLAGS = -r
!endif
!if !defined(EXTLIBS)
EXTLIBS =
!endif
LIBS = coredll.lib winsock.lib $(EXTLIBS)
MISSING = acosh.obj crypt.obj dup2.obj hypot.obj \
isinf.obj isnan.obj strftime.obj win32.obj
WINCEOBJ= assert.obj direct.obj errno.obj io_wce.obj process_wce.obj \
signal_wce.obj stdio.obj stdlib.obj string_wce.obj \
time_wce.obj wince.obj winsock2.obj
WINCESYSOBJ = stat.obj timeb.obj utime.obj
ARFLAGS = -machine:$(MACHINE) -out:
CC = $(CC) -nologo
LD = $(CC)
LDSHARED = $(LD) -LD
XCFLAGS =
LDFLAGS = -link -incremental:yes -pdb:none -MACHINE:$(MACHINE)
DLDFLAGS = $(LDFLAGS) -dll
XLDFLAGS = -stack:$(STACK)
SOLIBS =
LIBRUBY_LDSHARED = $(LDSHARED)
LIBRUBY_DLDFLAGS = $(EXTLDFLAGS) -def:$(RUBYDEF)
EXEEXT = .exe
PROGRAM=$(RUBY_INSTALL_NAME)$(EXEEXT)
WPROGRAM=$(RUBYW_INSTALL_NAME)$(EXEEXT)
RUBYDEF = $(RUBY_SO_NAME).def
MINIRUBY = .\minirubyce$(EXEEXT)
!if !defined(STACK)
STACK = 0x200000,0x10000
!endif
ORGLIBPATH = $(LIB)
#### End of system configuration section. ####
LIBRUBY_A = $(RUBY_SO_NAME)-static.lib
LIBRUBY_SO = $(RUBY_SO_NAME).dll
LIBRUBY = $(RUBY_SO_NAME).lib
LIBRUBYARG = $(LIBRUBY)
EXTOBJS =
MAINOBJ = main.obj
WINMAINOBJ = wincemain.obj
OBJS = array.obj \
bignum.obj \
class.obj \
compar.obj \
dir.obj \
dln.obj \
enum.obj \
error.obj \
eval.obj \
file.obj \
gc.obj \
hash.obj \
inits.obj \
io.obj \
marshal.obj \
math.obj \
numeric.obj \
object.obj \
pack.obj \
parse.obj \
prec.obj \
process.obj \
random.obj \
range.obj \
re.obj \
regex.obj \
ruby.obj \
signal.obj \
sprintf.obj \
st.obj \
string.obj \
struct.obj \
time.obj \
util.obj \
variable.obj \
version.obj \
$(MISSING) \
$(WINCEOBJ) \
$(WINCESYSOBJ)
all: ext minirubyce$(EXEEXT) rbconfig.rb \
$(LIBRUBY) $(MISCLIBS)
# @$(MINIRUBY) $(srcdir)/ext/extmk.rb --extstatic=$(EXTSTATIC) --make "$(MAKE)" --make-flags "-$(MFLAGS)$(MAKEFLAGS)"
@miniruby$(EXEEXT) $(srcdir)/ext/extmk.rb --extstatic=$(EXTSTATIC) --make "$(MAKE)" --make-flags "-$(MFLAGS)$(MAKEFLAGS)"
ext:
@mkdir $@
ruby: $(PROGRAM)
rubyw: $(WPROGRAM)
lib: $(LIBRUBY)
dll: $(LIBRUBY_SO)
config: config.h config.status
BANG = !
!if exist(config.h)
!include config.h
!endif
config.h:
@echo Creating <<$@
#define STDC_HEADERS 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_SYS_STAT_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STRING_H 1
#define HAVE_MEMORY_H 1
#define HAVE_FLOAT_H 1
#define HAVE_OFF_T 1
#define SIZEOF_INT 4
#define SIZEOF_SHORT 2
#define SIZEOF_LONG 4
#define SIZEOF_LONG_LONG 0
#define SIZEOF___INT64 8
#define SIZEOF_OFF_T 4
#define SIZEOF_VOIDP 4
#define SIZEOF_FLOAT 4
#define SIZEOF_DOUBLE 8
#define HAVE_PROTOTYPES 1
#define TOKEN_PASTE(x,y) x##y
#define HAVE_STDARG_PROTOTYPES 1
#if _MSC_VER > 1100 && !defined NORETURN
#define NORETURN(x) __declspec(noreturn) x
#else
#define NORETURN(x) x
#endif
#define HAVE_DECL_SYS_NERR 1
#define STDC_HEADERS 1
#define HAVE_STDLIB_H 1
#define HAVE_STRING_H 1
#define HAVE_FCNTL_H 1
#define HAVE_SYS_UTIME_H 1
#define HAVE_MEMORY_H 1
#define uid_t int
#define gid_t int
#define HAVE_STRUCT_STAT_ST_RDEV 1
#define HAVE_ST_RDEV 1
#define GETGROUPS_T int
#define RETSIGTYPE void
#define HAVE_MEMCMP 1
#define HAVE_MEMMOVE 1
#define HAVE_MKDIR 1
#define HAVE_STRCASECMP 1
#define HAVE_STRNCASECMP 1
#define HAVE_STRERROR 1
#define HAVE_STRFTIME 1
#define HAVE_STRCHR 1
#define HAVE_STRSTR 1
#define HAVE_STRTOD 1
#define HAVE_STRTOL 1
#define HAVE_STRTOUL 1
#define HAVE_FLOCK 1
#define HAVE_VSNPRINTF 1
#define HAVE_FINITE 1
#define HAVE_FMOD 1
#define HAVE_FREXP 1
#define HAVE_HYPOT 1
#define HAVE_MODF 1
#define HAVE_WAITPID 1
#define HAVE_CHSIZE 0
#define HAVE_TIMES 1
#define HAVE__SETJMP 1
#define HAVE_TELLDIR 1
#define HAVE_SEEKDIR 1
#define HAVE_MKTIME 1
#define HAVE_COSH 1
#define HAVE_SINH 1
#define HAVE_TANH 1
#define HAVE_EXECVE 0
#define HAVE_TZNAME 1
#define HAVE_DAYLIGHT 1
#define SETPGRP_VOID 1
#define inline __inline
#define RSHIFT(x,y) ((x)>>(int)y)
#define DEFAULT_KCODE KCODE_NONE
#define DLEXT ".so"
#define DLEXT2 ".dll"
#define RUBY_LIB "/lib/ruby/$(MAJOR).$(MINOR)"
#define RUBY_SITE_LIB "/lib/ruby/site_ruby"
#define RUBY_SITE_LIB2 "/lib/ruby/site_ruby/$(MAJOR).$(MINOR)"
#define RUBY_PLATFORM "$(ARCH)-$(OS)"
#define RUBY_ARCHLIB "/lib/ruby/$(MAJOR).$(MINOR)/$(ARCH)-$(OS)"
#define RUBY_SITE_ARCHLIB "/lib/ruby/site_ruby/$(MAJOR).$(MINOR)/$(ARCH)-$(RT)"
#define LIBRUBY_SO "$(LIBRUBY_SO)"
#if 0
$(BANG)if "$(RUBY_SO_NAME)"!="$$(RUBY_SO_NAME)" || "$(ARCH)-$(OS)"!="$$(ARCH)-$$(OS)"
config.h: nul
$(BANG)endif
#endif
#define GC_MALLOC_LIMIT 4000000
#define stricmp _stricmp
#define fopen wce_fopen
#define open _open
#define read _read
#define write _write
#define lseek _lseek
<<KEEP
config.status: Makefile $(srcdir)/wince/Makefile.sub
@echo Creating <<$@
# Generated automatically by Makefile.sub.
s,@SHELL@,$$(COMSPEC),;t t
s,@CFLAGS@,$(CFLAGS),;t t
s,@CPPFLAGS@,$(CPPFLAGS),;t t
s,@CXXFLAGS@,$(CXXFLAGS),;t t
s,@FFLAGS@,$(FFLAGS),;t t
s,@LDFLAGS@,,;t t
s,@LIBS@,$(LIBS),;t t
s,@exec_prefix@,$${prefix},;t t
s,@prefix@,,;t t
s,@program_transform_name@,s,,,,;t t
s,@bindir@,$${exec_prefix}/bin,;t t
s,@sbindir@,$${exec_prefix}/sbin,;t t
s,@libexecdir@,$${exec_prefix}/libexec,;t t
s,@datadir@,$${prefix}/share,;t t
s,@sysconfdir@,$${prefix}/etc,;t t
s,@sharedstatedir@,/etc,;t t
s,@localstatedir@,/var,;t t
s,@libdir@,$${exec_prefix}/lib,;t t
s,@includedir@,$${prefix}/include,;t t
s,@oldincludedir@,/usr/include,;t t
s,@infodir@,$${prefix}/info,;t t
s,@mandir@,$${prefix}/man,;t t
s,@build@,$(CPU)-pc-$(OS),;t t
s,@build_alias@,$(CPU)-$(OS),;t t
s,@build_cpu@,$(CPU),;t t
s,@build_vendor@,pc,;t t
s,@build_os@,$(OS),;t t
s,@host@,$(CPU)-pc-$(OS),;t t
s,@host_alias@,$(CPU)-$(OS),;t t
s,@host_cpu@,$(CPU),;t t
s,@host_vendor@,pc,;t t
s,@host_os@,$(OS),;t t
s,@target@,$(ARCH)-pc-$(OS),;t t
s,@target_alias@,$(ARCH)-$(OS),;t t
s,@target_cpu@,$(ARCH),;t t
s,@target_vendor@,pc,;t t
s,@target_os@,$(OS),;t t
s,@CC@,$(CC),;t t
s,@CPP@,$(CPP),;t t
s,@YACC@,$(YACC),;t t
s,@RANLIB@,,;t t
s,@AR@,$(AR),;t t
s,@ARFLAGS@,$(ARFLAGS),;t t
s,@LN_S@,$(LN_S),;t t
s,@SET_MAKE@,$(SET_MAKE),;t t
s,@LIBOBJS@, acosh.obj crypt.obj win32.obj isinf.obj isnan.obj,;t t
s,@ALLOCA@,$(ALLOCA),;t t
s,@DEFAULT_KCODE@,$(DEFAULT_KCODE),;t t
s,@EXEEXT@,.exe,;t t
s,@OBJEXT@,obj,;t t
s,@XLDFLAGS@,$(XLDFLAGS),;t t
s,@DLDFLAGS@,$(DLDFLAGS) $$(LIBPATH) -def:$$(DEFFILE),;t t
s,@STATIC@,$(STATIC),;t t
s,@CCDLFLAGS@,-DIMPORT,;t t
s,@LDSHARED@,$(LDSHARED),;t t
s,@DLEXT@,so,;t t
s,@DLEXT2@,dll,;t t
s,@LIBEXT@,lib,;t t
s,@STRIP@,$(STRIP),;t t
s,@EXTSTATIC@,$(EXTSTATIC),;t t
s,@setup@,Setup,;t t
s,@MINIRUBY@,$(MINIRUBY),;t t
s,@LIBRUBY_LDSHARED@,$(LIBRUBY_LDSHARED),;t t
s,@LIBRUBY_DLDFLAGS@,$(LIBRUBY_DLDFLAGS),;t t
s,@RUBY_INSTALL_NAME@,$(RUBY_INSTALL_NAME),;t t
s,@rubyw_install_name@,$(RUBYW_INSTALL_NAME),;t t
s,@RUBYW_INSTALL_NAME@,$(RUBYW_INSTALL_NAME),;t t
s,@RUBY_SO_NAME@,$(RUBY_SO_NAME),;t t
s,@LIBRUBY_A@,$$(RUBY_SO_NAME)-static.lib,;t t
s,@LIBRUBY_SO@,$$(RUBY_SO_NAME).dll,;t t
s,@LIBRUBY_ALIASES@,$(LIBRUBY_ALIASES),;t t
s,@LIBRUBY@,$$(RUBY_SO_NAME).lib,;t t
s,@LIBRUBYARG@,$$(LIBRUBYARG_SHARED),;t t
s,@LIBRUBYARG_STATIC@,$$(LIBRUBY_A),;t t
s,@LIBRUBYARG_SHARED@,$$(LIBRUBY),;t t
s,@SOLIBS@,$(SOLIBS),;t t
s,@DLDLIBS@,$(DLDLIBS),;t t
s,@ENABLE_SHARED@,yes,;t t
s,@OUTFLAG@,-Fe,;t t
s,@CPPOUTFILE@,-P,;t t
s,@LIBPATHFLAG@, -libpath:%s,;t t
s,@LIBARG@,%s.lib,;t t
s,@LINK_SO@,$$(LDSHARED) -Fe$$(@) $$(OBJS) $$(LIBS) $$(LOCAL_LIBS) $$(DLDFLAGS),;t t
s,@COMPILE_C@,$$(CC) $$(CFLAGS) $$(CPPFLAGS) -c -Tc$$(<:\=/),;t t
s,@COMPILE_CXX@,$$(CXX) $$(CXXFLAGS) $$(CPPFLAGS) -c -Tp$$(<:\=/),;t t
s,@COMPILE_RULES@,{$$(srcdir)}.%s{}.%s: .%s.%s:,;t t
s,@TRY_LINK@,$$(CC) -Feconftest $$(INCFLAGS) -I$$(hdrdir) $$(CPPFLAGS) $$(CFLAGS) $$(src) $$(LOCAL_LIBS) $$(LIBS) -link $$(LDFLAGS) $$(LIBPATH) $$(XLDFLAGS),;t t
s,@COMMON_LIBS@,m,;t t
s,@COMMON_MACROS@,WIN32_LEAN_AND_MEAN;t t
s,@COMMON_HEADERS@,winsock2.h windows.h,;t t
s,@EXPORT_PREFIX@, ,;t t
s,@arch@,$(ARCH)-$(OS),;t t
s,@sitearch@,$(ARCH)-$(RT),;t t
s,@sitedir@,$${prefix}/lib/ruby/site_ruby,;t t
s,@configure_args@,--with-make-prog=nmake --enable-shared $(configure_args),;t t
s,@configure_input@,$$configure_input,;t t
s,@srcdir@,$(srcdir),;t t
s,@top_srcdir@,$(srcdir),;t t
<<KEEP
minirubyce$(EXEEXT): $(OBJS) $(MAINOBJ) $(WINMAINOBJ) dmyext.obj
@echo. $(LIBS)
$(PURIFY) $(CC) $(MAINOBJ) $(WINMAINOBJ) dmyext.obj $(OBJS) $(LIBS) -Fe$@ $(LDFLAGS)
$(PROGRAM): $(MAINOBJ) $(WINMAINOBJ) $(LIBRUBY_SO) $*.res
$(PURIFY) $(CC) $(MAINOBJ) $(WINMAINOBJ) $*.res \
-Fe$@ $(LIBRUBYARG) $(LDFLAGS) $(XLDFLAGS) -subsystem:"windowsce,3.0"
$(WPROGRAM): $(MAINOBJ) $(WINMAINOBJ) $(LIBRUBY_SO) $*.res
$(PURIFY) $(CC) $(MAINOBJ) $(WINMAINOBJ) $*.res \
-Fe$@ $(LIBRUBYARG) $(LDFLAGS) $(XLDFLAGS) -subsystem:"windowsce,3.0"
$(LIBRUBY_A): $(OBJS) dmyext.obj
$(AR) $(ARFLAGS)$@ $(OBJS) dmyext.obj
$(LIBRUBY): $(RUBYDEF)
$(AR) $(ARFLAGS)$@ -def:$(RUBYDEF)
$(LIBRUBY_SO): $(LIBRUBY_A) $(EXTOBJS) $(RUBYDEF) $*.res
@echo. $(EXTOBJS)
$(LIBRUBY_LDSHARED) $(MAINOBJ) $(EXTOBJS) $(LIBRUBY_A) $*.res $(LIBS) \
-Fe$@ $(LDFLAGS) $(LIBRUBY_DLDFLAGS)
$(RUBYDEF): $(LIBRUBY_A) minirubyce$(EXEEXT)
miniruby$(EXEEXT) $(srcdir)/wince/mkexports.rb \
-output=$@ $(LIBRUBY_A) $(ARCH)
{$(srcdir)/wince}.def.lib:
$(AR) $(ARFLAGS)$@ -def:$<
install: rbconfig.rb
# miniruby$(EXEEXT) $(srcdir)/instruby.rb -$(MFLAGS)$(MAKEFLAGS) $(DESTDIR)
# miniruby$(EXEEXT) $(srcdir)/ext/extmk.rb --make "$(MAKE)" --make-flags "-$(MFLAGS)$(MAKEFLAGS) DESTDIR=$(DESTDIR)" install
miniruby$(EXEEXT) $(srcdir)/instruby.rb \
"--dest-dir=$(DESTDIR)" "--make=nmake"
miniruby$(EXEEXT) $(srcdir)/ext/extmk.rb \
--make "$(MAKE)" --make-flags "-$(MFLAGS)$(MAKEFLAGS) DESTDIR=$(DESTDIR)" install
clean: clean-ext clean-local
clean-local:
@if exist $(LIBRUBY_A) del $(LIBRUBY_A)
@if exist $(MAINOBJ) del $(MAINOBJ)
@if exist rbconfig.rb del rbconfig.rb
@if exist ext\extinit.c del ext\extinit.c
@if exist ext\extinit.obj del ext\extinit.obj
@if exist ext\vc*.pdb del ext\vc*.pdb
@if exist *.obj del *.obj
@if exist *.res del *.res
clean-ext:
# @-$(MINIRUBY) $(srcdir)/ext/extmk.rb --make "$(MAKE)" --make-flags "-$(MFLAGS)$(MAKEFLAGS)" clean
@-miniruby$(EXEEXT) $(srcdir)/ext/extmk.rb --make "$(MAKE)" --make-flags "-$(MFLAGS)$(MAKEFLAGS)" clean
distclean: distclean-ext distclean-local
distclean-local: clean-local
@if exist Makefile del Makefile
@if exist config.h del config.h
@if exist ext\config.cache del ext\config.cache
@if exist config.cache del config.cache
@if exist config.log del config.log
@if exist config.status del config.status
@if exist *~ del *~
@if exist *.bak del *.bak
@if exist *.stackdump del *.stackdump
@if exist *.core del *.core
@if exist gmon.out del gmon.out
@if exist y.tab.c del y.tab.c
@if exist y.output del y.output
@if exist *.map del *.map
@if exist *.pdb del *.pdb
@if exist *.ilk del *.ilk
@if exist *.exp del *.exp
@if exist $(RUBYDEF) del $(RUBYDEF)
@if exist $(RUBY_INSTALL_NAME).rc del $(RUBY_INSTALL_NAME).rc
@if exist $(RUBYW_INSTALL_NAME).rc del $(RUBYW_INSTALL_NAME).rc
@if exist $(RUBY_SO_NAME).rc del $(RUBY_SO_NAME).rc
@if exist $(PROGRAM) del $(PROGRAM)
@if exist $(WPROGRAM) del $(WPROGRAM)
@if exist $(LIBRUBY_SO) del $(LIBRUBY_SO)
@if exist $(LIBRUBY) del $(LIBRUBY)
@if exist ext\nul if not exist ext\* rmdir ext
@if exist minirubyce$(EXEEXT) del minirubyce$(EXEEXT)
distclean-ext:
@-$(MINIRUBY) $(srcdir)/ext/extmk.rb --make "$(MAKE)" --make-flags "-$(MFLAGS)$(MAKEFLAGS)" distclean
realclean: distclean
@if exist parse.c del parse.c
@if exist lex.c del lex.c
test: miniruby$(EXEEXT)
@miniruby$(EXEEXT) $(srcdir)/rubytest.rb
rbconfig.rb: minirubyce$(EXEEXT) config.status
miniruby$(EXEEXT) $(srcdir)/mkconfig.rb -srcdir=$(srcdir) \
-install_name=$(RUBY_INSTALL_NAME) \
-so_name=$(RUBY_SO_NAME) rbconfig.rb
$(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(RUBY_SO_NAME).rc: rbconfig.rb
miniruby$(EXEEXT) $(srcdir)/wince/resource.rb \
-ruby_name=$(RUBY_INSTALL_NAME) \
-rubyw_name=$(RUBYW_INSTALL_NAME) \
-so_name=$(RUBY_SO_NAME) \
. $(icondirs) $(srcdir)/wince
{$(srcdir)/missing}.c.obj:
$(CC) $(CFLAGS) $(XCFLAGS) -I. -I$(<D) $(CPPFLAGS) -c -Tc$(<:\=/)
{$(srcdir)/win32}.c.obj:
$(CC) $(CFLAGS) $(XCFLAGS) -I. -I$(<D) $(CPPFLAGS) -c -Tc$(<:\=/)
{$(srcdir)/wince}.c.obj:
$(CC) $(CFLAGS) $(XCFLAGS) -I. -I$(<D) $(CPPFLAGS) -c -Tc$(<:\=/)
{$(srcdir)/wince/sys}.c.obj:
$(CC) $(CFLAGS) $(XCFLAGS) -I. -I$(<D) $(CPPFLAGS) -c -Tc$(<:\=/)
{$(srcdir)}.c.obj:
$(CC) $(CFLAGS) $(XCFLAGS) -I. -I$(<D) $(CPPFLAGS) -c -Tc$(<:\=/)
.c.obj:
$(CC) $(CFLAGS) $(XCFLAGS) -I. $(CPPFLAGS) -c -Tc$(<:\=/)
.rc.res:
$(RC) -I. -I$(<D) $(iconinc) -I$(srcdir)/win32 $(RFLAGS) -fo$@ $(<:\=/)
{$(srcdir)}.y.c:
$(YACC) $(YFLAGS) $(<:\=/)
sed -e "s!^extern char \*getenv();!/* & */!;s/^\(#.*\)y\.tab/\1parse/" y.tab.c > $@
@del y.tab.c
{$(srcdir)}parse.c: parse.y
ext/extinit.obj: ext/extinit.c $(SETUP)
$(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) -Fo$@ -c ext/extinit.c
acosh.obj: {$(srcdir)}missing/acosh.c
alloca.obj: {$(srcdir)}missing/alloca.c
crypt.obj: {$(srcdir)}missing/crypt.c
dup2.obj: {$(srcdir)}missing/dup2.c
finite.obj: {$(srcdir)}missing/finite.c
flock.obj: {$(srcdir)}missing/flock.c
isinf.obj: {$(srcdir)}missing/isinf.c
isnan.obj: {$(srcdir)}missing/isnan.c
memcmp.obj: {$(srcdir)}missing/memcmp.c
memmove.obj: {$(srcdir)}missing/memmove.c
mkdir.obj: {$(srcdir)}missing/mkdir.c
vsnprintf.obj: {$(srcdir)}missing/vsnprintf.c
strcasecmp.obj: {$(srcdir)}missing/strcasecmp.c
strncasecmp.obj: {$(srcdir)}missing/strncasecmp.c
strchr.obj: {$(srcdir)}missing/strchr.c
strdup.obj: {$(srcdir)}missing/strdup.c
strerror.obj: {$(srcdir)}missing/strerror.c
strftime.obj: {$(srcdir)}missing/strftime.c
strstr.obj: {$(srcdir)}missing/strstr.c
strtod.obj: {$(srcdir)}missing/strtod.c
strtol.obj: {$(srcdir)}missing/strtol.c
strtoul.obj: {$(srcdir)}missing/strtoul.c
nt.obj: {$(srcdir)}missing/nt.c
x68.obj: {$(srcdir)}missing/x68.c
os2.obj: {$(srcdir)}missing/os2.c
dl_os2.obj: {$(srcdir)}missing/dl_os2.c
# when I use -I., there is confliction at "OpenFile"
# so, set . into environment varible "include"
win32.obj: {$(srcdir)}win32/win32.c
# Prevent GNU make v3 from overflowing arg limit on SysV.
.NOEXPORT:
###
array.obj: {$(srcdir)}array.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}util.h {$(srcdir)}st.h {$(srcdir)}/win32/win32.h
bignum.obj: {$(srcdir)}bignum.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}/win32/win32.h
class.obj: {$(srcdir)}class.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}rubysig.h {$(srcdir)}node.h {$(srcdir)}st.h \
{$(srcdir)}/win32/win32.h
compar.obj: {$(srcdir)}compar.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}/win32/win32.h
dir.obj: {$(srcdir)}dir.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}util.h {$(srcdir)}/win32/win32.h
dln.obj: {$(srcdir)}dln.c config.h {$(srcdir)}defines.h \
{$(srcdir)}dln.h {$(srcdir)}/win32/win32.h
dmyext.obj: {$(srcdir)}dmyext.c
enum.obj: {$(srcdir)}enum.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}node.h {$(srcdir)}util.h {$(srcdir)}/win32/win32.h
error.obj: {$(srcdir)}error.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}env.h {$(srcdir)}version.h {$(srcdir)}/win32/win32.h
eval.obj: {$(srcdir)}eval.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}node.h {$(srcdir)}env.h {$(srcdir)}util.h \
{$(srcdir)}rubysig.h {$(srcdir)}st.h {$(srcdir)}dln.h \
{$(srcdir)}/win32/win32.h
file.obj: {$(srcdir)}file.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}rubyio.h {$(srcdir)}rubysig.h {$(srcdir)}util.h \
{$(srcdir)}dln.h {$(srcdir)}/win32/win32.h
gc.obj: {$(srcdir)}gc.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}rubysig.h {$(srcdir)}st.h {$(srcdir)}node.h \
{$(srcdir)}env.h {$(srcdir)}re.h {$(srcdir)}regex.h \
{$(srcdir)}/win32/win32.h
hash.obj: {$(srcdir)}hash.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}st.h {$(srcdir)}util.h {$(srcdir)}rubysig.h \
{$(srcdir)}/win32/win32.h
inits.obj: {$(srcdir)}inits.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}/win32/win32.h
io.obj: {$(srcdir)}io.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}rubyio.h {$(srcdir)}rubysig.h {$(srcdir)}env.h \
{$(srcdir)}util.h {$(srcdir)}/win32/win32.h
main.obj: {$(srcdir)}main.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}/win32/win32.h
marshal.obj: {$(srcdir)}marshal.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}rubyio.h {$(srcdir)}st.h {$(srcdir)}/win32/win32.h
math.obj: {$(srcdir)}math.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}/win32/win32.h
numeric.obj: {$(srcdir)}numeric.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}/win32/win32.h
object.obj: {$(srcdir)}object.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}st.h {$(srcdir)}/win32/win32.h
pack.obj: {$(srcdir)}pack.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}/win32/win32.h
parse.obj: {$(srcdir)}parse.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}env.h {$(srcdir)}node.h {$(srcdir)}st.h {$(srcdir)}regex.h \
{$(srcdir)}util.h {$(srcdir)}lex.c {$(srcdir)}/win32/win32.h
prec.obj: {$(srcdir)}prec.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}/win32/win32.h
process.obj: {$(srcdir)}process.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}rubysig.h {$(srcdir)}st.h {$(srcdir)}/win32/win32.h
random.obj: {$(srcdir)}random.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}/win32/win32.h
range.obj: {$(srcdir)}range.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}/win32/win32.h
re.obj: {$(srcdir)}re.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}re.h {$(srcdir)}regex.h {$(srcdir)}/win32/win32.h
regex.obj: {$(srcdir)}regex.c config.h {$(srcdir)}regex.h \
{$(srcdir)}/win32/win32.h
ruby.obj: {$(srcdir)}ruby.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}dln.h {$(srcdir)}node.h {$(srcdir)}util.h \
{$(srcdir)}/win32/win32.h
signal.obj: {$(srcdir)}signal.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}rubysig.h {$(srcdir)}/win32/win32.h
sprintf.obj: {$(srcdir)}sprintf.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}/win32/win32.h
st.obj: {$(srcdir)}st.c config.h {$(srcdir)}st.h \
{$(srcdir)}/win32/win32.h
string.obj: {$(srcdir)}string.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}re.h {$(srcdir)}regex.h {$(srcdir)}/win32/win32.h
struct.obj: {$(srcdir)}struct.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}/win32/win32.h
time.obj: {$(srcdir)}time.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}/win32/win32.h
util.obj: {$(srcdir)}util.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}util.h {$(srcdir)}/win32/win32.h
variable.obj: {$(srcdir)}variable.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}env.h {$(srcdir)}node.h {$(srcdir)}st.h {$(srcdir)}util.h \
{$(srcdir)}/win32/win32.h
version.obj: {$(srcdir)}version.c {$(srcdir)}ruby.h config.h \
{$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
{$(srcdir)}version.h {$(srcdir)}/win32/win32.h

View file

@ -6,27 +6,48 @@
(1) eMbedded Visual C++ 3.0 or later.
(2) If you want to run `((%nmake clean%))' or `((%nmake distclean%))'
properly, you must install UNIX compatible `((%rm%))' command on
your ((|PATH|)) if you want to clean after compile.
(3) Please set environment variable (({INCLUDE})), (({LIB})), (({PATH})),
(({CE_TOOLS_DIR})), (({EMBEDDED_TOOLS_DIR})) to run required commands
properly from the command line.
Note: building ruby requires following commands.
* nmake
* clarm or clmips or shcl
* lib
* dumpbin
== How to compile and install
(1) Move to ruby\wince directory.
(2) if you changed install directories of eMVC and SDK from default
settings, please modify .\configure.bat in order to set
environment valuables such as "PATH", "INCLUDE", and "LIB".
(2) Execute .\configure.bat on "ruby\wince" directory.
(1) Execute wince\configure.bat on your build directory.
You can specify the target platform as an argument.
For example, run:
[CPU] [OS ver.]
StrongARM HPC2000 : `configure ARM HPC2K'
MIPS PocketPC : `configure MIPS PPC'
SH3 PocketPC : `configure SH3 PPC'
SH4 HPCPro : `configure SH4 HPCPRO'
(caution: "HPCPro" is not supported yet.)
For example, run `((%configure arm-hpc2k-wince%))'
(3) Execute `.\make.bat'.
(2) Change ((|RUBY_INSTALL_NAME|)) and ((|RUBY_SO_NAME|)) in (({Makefile}))
if you want to change the name of the executable files.
(4) Copy mswince-ruby17.dll, ruby.exe, and irb.exe to your WinCE machine.
(3) Run `((%nmake%))'
(4) Run `((%nmake DESTDIR=<install_directory> install%))'
This command will create following directories and copy (not install :-P)
files onto them.
* <install_directory>\bin
* <install_directory>\lib
* <install_directory>\lib\ruby
* <install_directory>\lib\ruby\<MAJOR>.<MINOR>
* <install_directory>\lib\ruby\<MAJOR>.<MINOR>\<PLATFORM>
* <install_directory>\lib\ruby\site_ruby
* <install_directory>\lib\ruby\site_ruby\<MAJOR>.<MINOR>
* <install_directory>\lib\ruby\site_ruby\<MAJOR>.<MINOR>\<PLATFORM>
* <install_directory>\man\man1
If Ruby's version is `x.y.z', the ((|<MAJOR>|)) is `x' and the ((|<MINOR>|)) is `y'.
In case of `mips-hpc2k-wince', The ((|<PLATFORM>|)) is `(({mips-mswince}))'.
(5) Copy <install_directory> to your WindowsCE machine.
== Icons
@ -49,14 +70,52 @@ in Japanese, but you can download at least.
== Build examples
ex.)
current directory: C:\
ruby source directory: C:\ruby
target CPU: StrongARM
target OS version: PocketPC
* Build on the ruby source directory.
cd \ruby\wince
.\configure ARM PPC
.\make.bat
ex.)
ruby source directory: C:\ruby
build directory: C:\ruby
install directory: C:\usr\local
C:
cd \ruby
win32\configure
nmake
nmake DESTDIR=/usr/local install
* Build on the relative directory from the ruby source directory.
ex.)
ruby source directory: C:\ruby
build directory: C:\ruby\mswin32
install directory: C:\usr\local
C:
cd \ruby
mkdir mswin32
cd mswin32
..\win32\configure
nmake
nmake DESTDIR=/usr/local install
* Build on the different drive.
ex.)
ruby source directory: C:\src\ruby
build directory: D:\build\ruby
install directory: C:\usr\local
D:
cd D:\build\ruby
C:\src\ruby\win32\configure
nmake
nmake DESTDIR=C:/usr/local install
== Bugs
You can ((*NOT*)) use a path name contains any white space characters as
the ruby source directory, this restriction comes from the behavior of
(({!INCLUDE})) directives of (({NMAKE})).
((- you may call it a bug. -))
=end

11
wince/assert.c Normal file
View file

@ -0,0 +1,11 @@
#include <windows.h>
#include <tchar.h>
#include "assert.h"
void assert( int expression )
{
if( expression==0 )
exit(2);
}

View file

@ -1,4 +1,6 @@
#ifndef _ASSERT_H_
#define _ASSERT_H_
void assert( int expression );
#endif

View file

@ -1,135 +0,0 @@
/* config.h */
/* based on mswin32's. */
#define STDC_HEADERS 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_SYS_STAT_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STRING_H 1
#define HAVE_MEMORY_H 1
#define HAVE_OFF_T 1
#define SIZEOF_INT 4
#define SIZEOF_SHORT 2
#define SIZEOF_LONG 4
#define SIZEOF_LONG_LONG 0
#define SIZEOF___INT64 8
#define SIZEOF_OFF_T 4
#define SIZEOF_VOIDP 4
#define SIZEOF_FLOAT 4
#define SIZEOF_DOUBLE 8
#define HAVE_PROTOTYPES 1
#define TOKEN_PASTE(x,y) x##y
#define HAVE_STDARG_PROTOTYPES 1
#if _MSC_VER > 1100 && !defined NORETURN
#define NORETURN(x) __declspec(noreturn) x
#else
#define NORETURN(x) x
#endif
#define HAVE_DECL_SYS_NERR 1
#define STDC_HEADERS 1
#define HAVE_STDLIB_H 1
#define HAVE_STRING_H 1
#define HAVE_LIMITS_H 1
#define HAVE_FCNTL_H 1
#define HAVE_SYS_UTIME_H 1
#define HAVE_MEMORY_H 1
#define uid_t int
#define gid_t int
#define HAVE_STRUCT_STAT_ST_RDEV 1
#define HAVE_ST_RDEV 1
#define GETGROUPS_T int
#define RETSIGTYPE void
#define HAVE_ALLOCA 1
#define HAVE_DUP2 1
#define HAVE_MEMCMP 1
#define HAVE_MEMMOVE 1
#define HAVE_MKDIR 1
#define HAVE_STRCASECMP 1
#define HAVE_STRNCASECMP 1
#define HAVE_STRERROR 1
#define HAVE_STRFTIME 1
#define HAVE_STRCHR 1
#define HAVE_STRSTR 1
#define HAVE_STRTOD 1
#define HAVE_STRTOL 1
#define HAVE_STRTOUL 1
#define HAVE_FLOCK 1
#define HAVE_VSNPRINTF 1
#define HAVE_FINITE 1
#define HAVE_FMOD 1
#define HAVE_FREXP 1
#define HAVE_HYPOT 1
#define HAVE_MODF 1
#define HAVE_WAITPID 1
#define HAVE_CHSIZE 1
#define HAVE_TIMES 1
#define HAVE__SETJMP 1
#define HAVE_TELLDIR 1
#define HAVE_SEEKDIR 1
#define HAVE_MKTIME 1
#define HAVE_COSH 1
#define HAVE_SINH 1
#define HAVE_TANH 1
#define HAVE_EXECVE 1
#define HAVE_TZNAME 1
#define HAVE_DAYLIGHT 1
#define SETPGRP_VOID 1
#define inline __inline
#define RSHIFT(x,y) ((x)>>(int)y)
#define DEFAULT_KCODE KCODE_NONE
#define DLEXT ".so"
#define DLEXT2 ".dll"
#define RUBY_LIB "/lib/ruby/1.8"
#define RUBY_SITE_LIB "/lib/ruby/site_ruby"
#define RUBY_SITE_LIB2 "/lib/ruby/site_ruby/1.8"
/* below wince's original definition. */
#define fdopen _fdopen
#define dup _dup
#define _dup2 dup2
#ifdef FormatMessage
#undef FormatMessage
#define FormatMessage FormatMessageA
#endif
#ifdef GetModuleFileName
#undef GetModuleFileName
#define GetModuleFileName GetModuleFileNameA
#endif
#ifdef CharNext
#undef CharNext
#define CharNext CharNextA
#endif
#ifdef CharPrev
#undef CharPrev
#define CharPrev CharPrevA
#endif
#ifdef LoadLibrary
#undef LoadLibrary
#define LoadLibrary LoadLibraryA
#endif
#ifdef GetProcAddress
#undef GetProcAddress
#define GetProcAddress GetProcAddressA
#endif
#if _WIN32_WCE < 300
/* for Handheld PC Pro. */
#define isascii(c) ( (c>=0x00&&c<=0x7f)?1:0 )
#define isspace(c) ( ((c>=0x09&&c<=0x0d)||c==0x20)?1:0 )
#define isdigit(c) ( (c>=0x00&&c<=0x09)?1:0 )
#define isupper(c) ( (c>='A'&&c<='Z')?1:0 )
#define isalpha(c) ( ((c>='A'&&c<='Z')||(c>='a'&&c<='z'))?1:0 )
#define isprint(c) ( (c>=0x20&&c<=0x7e)?1:0 )
#define isalnum(c) ( (isalpha(c)||isdigit(c))?1:0 )
#define iscntrl(c) ( ((c>=0x00&&c<=0x1f)||c==0x7f)?1:0 )
#define islower(c) ( (c>='a'&&c<='z')?1:0 )
#define ispunct(c) ( !(isalnum(c)||isspace(c))?1:0 )
#define isxdigit(c) ( ((c>=0&&c<=9)||(c>='A'&&c<='F')||(c>='a'&&c<='f'))?1:0 )
#endif

View file

@ -1,133 +1,57 @@
@echo off
::: Don't set environment variable in batch file other than autoexec.bat
::: to avoid "Out of environment space" problem on Windows 95/98.
::: set TMPMAKE=~tmp~.mak
if "%1"=="" goto error
if "%2"=="" goto error
if exist make.bat @del make.bat
if "%1"=="MIPS" goto mips
if "%1"=="ARM" goto arm
if "%1"=="SH3" goto sh3
if "%1"=="SH4" goto sh4
:mips
copy config config.h
echo #define RUBY_PLATFORM "mips-mswince" >> config.h
echo #define RUBY_ARCHLIB "/lib/ruby/1.8/mips-mswince" >> config.h
echo #define RUBY_SITE_ARCHLIB "/lib/ruby/site_ruby/1.8/mips-mswince" >> config.h
if "%2"=="HPC2K" goto mipshpc2k
if "%2"=="PPC" goto mipsppc
if "%2"=="HPCPRO" goto mipshpcpro
:mipshpc2k
echo nmake /f "dll.mak" CFG=MIPS >> make.bat
echo nmake /f "exe.mak" CFG=MIPS >> make.bat
set path=c:\program files\microsoft embedded tools\common\evc\bin;C:\Program Files\Microsoft eMbedded Tools\EVC\WCE300\BIN
set include=c:\windows ce tools\wce300\hpc2000\include
set lib=C:\Windows CE Tools\wce300\hpc2000\lib\mips
goto normalend
:mipsppc
echo nmake /f "dll.mak" CFG=MIPS >> make.bat
echo nmake /f "exe.mak" CFG=MIPS >> make.bat
set path=c:\program files\microsoft embedded tools\common\evc\bin;C:\Program Files\Microsoft eMbedded Tools\EVC\WCE300\BIN
set include=c:\windows ce tools\wce300\MS Pocket PC\include
set lib=c:\windows ce tools\wce300\MS Pocket PC\lib\mips
goto normalend
:mipshpcpro
echo nmake /f "dll.mak" CFG=MIPS CESubsystem=windowsce,2.11 CEVersion=211 >> make.bat
echo nmake /f "exe.mak" CFG=MIPS CESubsystem=windowsce,2.11 CEVersion=211 >> make.bat
set path=c:\program files\microsoft embedded tools\common\evc\bin;C:\Program Files\Microsoft eMbedded Tools\EVC\WCE211\BIN
set include=C:\Windows CE Tools\wce211\MS HPC Pro\include
set lib=C:\Windows CE Tools\wce211\MS HPC Pro\lib\mips
goto normalend
:arm
copy config config.h
echo #define RUBY_PLATFORM "arm-mswince" >> config.h
echo #define RUBY_ARCHLIB "/lib/ruby/1.8/arm-mswince" >> config.h
echo #define RUBY_SITE_ARCHLIB "/lib/ruby/site_ruby/1.8/arm-mswince" >> config.h
if "%2"=="HPC2K" goto armhpc2k
if "%2"=="PPC" goto armppc
if "%2"=="HPCPRO" goto armhpcpro
:armhpc2k
echo nmake /f "dll.mak" CFG=ARM >> make.bat
echo nmake /f "exe.mak" CFG=ARM >> make.bat
set path=c:\program files\microsoft embedded tools\common\evc\bin;C:\Program Files\Microsoft eMbedded Tools\EVC\WCE300\BIN
set include=c:\windows ce tools\wce300\hpc2000\include
set lib=C:\Windows CE Tools\wce300\hpc2000\lib\arm
goto normalend
:armppc
echo nmake /f "dll.mak" CFG=ARM >> make.bat
echo nmake /f "exe.mak" CFG=ARM >> make.bat
set path=c:\program files\microsoft embedded tools\common\evc\bin;C:\Program Files\Microsoft eMbedded Tools\EVC\WCE300\BIN
set include=c:\windows ce tools\wce300\MS Pocket PC\include
set lib=c:\windows ce tools\wce300\MS Pocket PC\lib\arm
goto normalend
:armhpcpro
echo nmake /f "dll.mak" CFG=ARM CESubsystem=windowsce,2.11 CEVersion=211 >> make.bat
echo nmake /f "exe.mak" CFG=ARM CESubsystem=windowsce,2.11 CEVersion=211 >> make.bat
set path=c:\program files\microsoft embedded tools\common\evc\bin;C:\Program Files\Microsoft eMbedded Tools\EVC\WCE211\BIN
set include=C:\Windows CE Tools\wce211\MS HPC Pro\include
set lib=C:\Windows CE Tools\wce211\MS HPC Pro\lib\arm
goto normalend
:sh3
copy config config.h
echo #define RUBY_PLATFORM "sh3-mswince" >> config.h
echo #define RUBY_ARCHLIB "/lib/ruby/1.8/sh3-mswince" >> config.h
echo #define RUBY_SITE_ARCHLIB "/lib/ruby/site_ruby/1.8/sh3-mswince" >> config.h
if "%2"=="HPC2K" goto error
if "%2"=="PPC" goto sh3ppc
if "%2"=="HPCPRO" goto sh3hpcpro
:sh3ppc
echo nmake /f "dll.mak" CFG=SH3 >> make.bat
echo nmake /f "exe.mak" CFG=SH3 >> make.bat
set path=c:\program files\microsoft embedded tools\common\evc\bin;C:\Program Files\Microsoft eMbedded Tools\EVC\WCE300\BIN
set include=c:\windows ce tools\wce300\MS Pocket PC\include
set lib=c:\windows ce tools\wce300\MS Pocket PC\lib\sh3
goto normalend
:sh3hpcpro
echo nmake /f "dll.mak" CFG=SH3 CESubsystem=windowsce,2.11 CEVersion=211 >> make.bat
echo nmake /f "exe.mak" CFG=SH3 CESubsystem=windowsce,2.11 CEVersion=211 >> make.bat
set path=c:\program files\microsoft embedded tools\common\evc\bin;C:\Program Files\Microsoft eMbedded Tools\EVC\WCE211\BIN
set include=C:\Windows CE Tools\wce211\MS HPC Pro\include
set lib=C:\Windows CE Tools\wce211\MS HPC Pro\lib\sh3
goto normalend
:sh4
copy config config.h
echo #define RUBY_PLATFORM "sh4-mswince" >> config.h
echo #define RUBY_ARCHLIB "/lib/ruby/1.8/sh4-mswince" >> config.h
echo #define RUBY_SITE_ARCHLIB "/lib/ruby/site_ruby/1.8/sh4-mswince" >> config.h
if "%2"=="HPC2K" goto error
if "%2"=="PPC" goto error
if "%2"=="HPCPRO" goto sh4hpcpro
:sh4hpcpro
echo nmake /f "dll.mak" CFG=SH4 CESubsystem=windowsce,2.11 CEVersion=211 >> make.bat
echo nmake /f "exe.mak" CFG=SH4 CESubsystem=windowsce,2.11 CEVersion=211 >> make.bat
set path=c:\program files\microsoft embedded tools\common\evc\bin;C:\Program Files\Microsoft eMbedded Tools\EVC\WCE211\BIN
set include=C:\Windows CE Tools\wce211\MS HPC Pro\include
set lib=C:\Windows CE Tools\wce211\MS HPC Pro\lib\sh4
goto normalend
:error
echo ERROR. Please check arguments.
goto end
:normalend
echo configure OK. Please type ".\make.bat".
goto end
echo> ~tmp~.mak ####
echo>> ~tmp~.mak conf = %0
echo>> ~tmp~.mak $(conf:\=/): nul
echo>> ~tmp~.mak @del ~tmp~.mak
echo>> ~tmp~.mak @-$(MAKE) -l$(MAKEFLAGS) -f $(@D)/setup.mak \
:loop
if "%1" == "" goto :end
if "%1" == "--srcdir" goto :srcdir
if "%1" == "srcdir" goto :srcdir
if "%1" == "--target" goto :target
if "%1" == "target" goto :target
if "%1" == "--program-suffix" goto :suffix
if "%1" == "--program-name" goto :progname
if "%1" == "CC" goto :define
if "%1" == "EMBEDDED_TOOLS_DIR" goto :define
if "%1" == "CE_TOOLS_DIR" goto :define
echo>> ~tmp~.mak "%1" \
shift
goto :loop
:srcdir
echo>> ~tmp~.mak "srcdir=%2" \
shift
shift
goto :loop
:suffix
echo>> ~tmp~.mak "RUBY_SUFFIX=%2" \
shift
shift
goto :loop
:installname
echo>> ~tmp~.mak "RUBY_INSTALL_NAME=%2" \
shift
shift
goto :loop
:soname
echo>> ~tmp~.mak "RUBY_SO_NAME=%2" \
shift
shift
goto :loop
:define
echo>> ~tmp~.mak "%1=%2" \
shift
shift
goto :loop
:target
echo>> ~tmp~.mak "%2" \
shift
shift
goto :loop
:end
echo>> ~tmp~.mak WIN32DIR=$(@D)
nmake -alf ~tmp~.mak

View file

@ -8,7 +8,7 @@
#include "wince.h" /* for wce_mbtowc */
/* global for chdir, getcwd */
static char _currentdir[MAX_PATH+1];
char _currentdir[MAX_PATH+1];
char *getcwd(char* buffer, int maxlen)

File diff suppressed because it is too large Load diff

View file

@ -1,353 +0,0 @@
!IF "$(CFG)" == ""
CFG=MIPS
!MESSAGE CFG not specified. use MIPS.
!ENDIF
!IF "$(CESubsystem)" == ""
#CESubsystem=windowsce,2.0
CESubsystem=windowsce,3.0
#!MESSAGE CESubsystem not specified. use windowsce,2.11.
!MESSAGE CESubsystem not specified. use windowsce,3.0.
!ENDIF
!IF "$(CEVersion)" == ""
#CEVersion=200
CEVersion=300
#!MESSAGE CEVersion not specified. use 211.
!MESSAGE CEVersion not specified. use 300.
!ENDIF
!IF $(CEVersion) < 201
CECrt=L
CECrtDebug=Ld
CECrtMT=T
CECrtMTDebug=Td
CENoDefaultLib=corelibc.lib
CEx86Corelibc=
!ELSE
CECrt=C
CECrtDebug=C
CECrtMT=C
CECrtMTDebug=C
CENoDefaultLib=libc.lib /nodefaultlib:libcd.lib /nodefaultlib:libcmt.lib /nodefaultlib:libcmtd.lib /nodefaultlib:msvcrt.lib /nodefaultlib:msvcrtd.lib
CEx86Corelibc=corelibc.lib
!ENDIF
!IF "$(CE_PLATFORM)"==""
CePlatform=WIN32_PLATFORM_UNKNOWN
!ELSE
CePlatform=$(CE_PLATFORM)
!ENDIF
!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE
NULL=nul
!ENDIF
!IF "$(CFG)" == "MIPS"
OUTDIR=.\MIPSRel
INTDIR=.\MIPSRel
# Begin Custom Macros
OutDir=.\MIPSRel
# End Custom Macros
ALL : "$(OUTDIR)\ruby.exe"
CLEAN :
-@erase "$(INTDIR)\main.obj"
-@erase "$(INTDIR)\wincemain.obj"
-@erase "$(OUTDIR)\ruby.exe"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
RSC=rc.exe
CPP=clmips.exe
CPP_PROJ=/nologo /W3 /I "." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "NDEBUG" /Fp"$(INTDIR)\ruby.pch" /YX /Fo"$(INTDIR)\\" /Oxs /M$(CECrtMT) /c
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
MTL=midl.exe
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\ruby.bsc"
BSC32_SBRS= \
LINK32=link.exe
LINK32_FLAGS=commctrl.lib coredll.lib mswince_ruby17.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /incremental:no /pdb:"$(OUTDIR)\ruby.pdb" /nodefaultlib:"$(CENoDefaultLib)" /out:"$(OUTDIR)\ruby.exe" /libpath:"$(OUTDIR)" /subsystem:$(CESubsystem) /MACHINE:MIPS
LINK32_OBJS= \
"$(INTDIR)\main.obj" \
"$(INTDIR)\wincemain.obj"
"$(OUTDIR)\ruby.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ELSEIF "$(CFG)" == "SH4"
OUTDIR=.\SH4Rel
INTDIR=.\SH4Rel
# Begin Custom Macros
OutDir=.\SH4Rel
# End Custom Macros
ALL : "$(OUTDIR)\ruby.exe"
CLEAN :
-@erase "$(INTDIR)\main.obj"
-@erase "$(INTDIR)\wincemain.obj"
-@erase "$(OUTDIR)\ruby.exe"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
RSC=rc.exe
CPP=shcl.exe
CPP_PROJ=/nologo /W3 /I "." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "SHx" /D "SH4" /D "_SH4_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "NDEBUG" /Fp"$(INTDIR)\ruby.pch" /YX /Fo"$(INTDIR)\\" /Qsh4 /Oxs /M$(CECrtMT) /c
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
MTL=midl.exe
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\ruby.bsc"
BSC32_SBRS= \
LINK32=link.exe
LINK32_FLAGS=commctrl.lib coredll.lib mswince_ruby17.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /incremental:no /pdb:"$(OUTDIR)\ruby.pdb" /nodefaultlib:"$(CENoDefaultLib)" /out:"$(OUTDIR)\ruby.exe" /libpath:"$(OUTDIR)" /subsystem:$(CESubsystem) /MACHINE:SH4
LINK32_OBJS= \
"$(INTDIR)\main.obj" \
"$(INTDIR)\wincemain.obj"
"$(OUTDIR)\ruby.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ELSEIF "$(CFG)" == "SH3"
OUTDIR=.\SH3Rel
INTDIR=.\SH3Rel
# Begin Custom Macros
OutDir=.\SH3Rel
# End Custom Macros
ALL : "$(OUTDIR)\ruby.exe"
CLEAN :
-@erase "$(INTDIR)\main.obj"
-@erase "$(INTDIR)\wincemain.obj"
-@erase "$(OUTDIR)\ruby.exe"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
RSC=rc.exe
CPP=shcl.exe
CPP_PROJ=/nologo /W3 /I "." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "SHx" /D "SH3" /D "_SH3_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "NDEBUG" /Fp"$(INTDIR)\ruby.pch" /YX /Fo"$(INTDIR)\\" /Oxs /M$(CECrtMT) /c
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
MTL=midl.exe
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\ruby.bsc"
BSC32_SBRS= \
LINK32=link.exe
LINK32_FLAGS=commctrl.lib coredll.lib mswince_ruby17.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /incremental:no /pdb:"$(OUTDIR)\ruby.pdb" /nodefaultlib:"$(CENoDefaultLib)" /out:"$(OUTDIR)\ruby.exe" /libpath:"$(OUTDIR)" /subsystem:$(CESubsystem) /MACHINE:SH3
LINK32_OBJS= \
"$(INTDIR)\main.obj" \
"$(INTDIR)\wincemain.obj"
"$(OUTDIR)\ruby.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ELSEIF "$(CFG)" == ARM"
OUTDIR=.\ARMRel
INTDIR=.\ARMRel
# Begin Custom Macros
OutDir=.\ARMRel
# End Custom Macros
ALL : "$(OUTDIR)\ruby.exe"
CLEAN :
-@erase "$(INTDIR)\main.obj"
-@erase "$(INTDIR)\wincemain.obj"
-@erase "$(OUTDIR)\ruby.exe"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
RSC=rc.exe
CPP=clarm.exe
CPP_PROJ=/nologo /W3 /I "C:\_develops\eMVT\ruby17\ruby\wince" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "NDEBUG" /Fp"$(INTDIR)\ruby.pch" /YX /Fo"$(INTDIR)\\" /Oxs /M$(CECrtMT) /c
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
MTL=midl.exe
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\ruby.bsc"
BSC32_SBRS= \
LINK32=link.exe
LINK32_FLAGS=commctrl.lib coredll.lib mswince_ruby17.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /incremental:no /pdb:"$(OUTDIR)\ruby.pdb" /nodefaultlib:"$(CENoDefaultLib)" /out:"$(OUTDIR)\ruby.exe" /libpath:"$(OUTDIR)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM
LINK32_OBJS= \
"$(INTDIR)\main.obj" \
"$(INTDIR)\wincemain.obj"
"$(OUTDIR)\ruby.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ENDIF
..\main.c : \
"..\defines.h"\
"..\intern.h"\
"..\missing.h"\
"..\ruby.h"\
"..\vms\vms.h"\
"..\win32\win32.h"\
.\wincemain.c : \
".\wince.h"\
SOURCE=..\main.c
"$(INTDIR)\main.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=.\wincemain.c
"$(INTDIR)\wincemain.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)

View file

@ -1,6 +1,11 @@
#ifndef _IO_H_
#define _IO_H_
#ifndef _IO_WINCE_H_
#define _IO_WINCE_H_
#ifndef _TIME_T_DEFINED
typedef unsigned long time_t;
#define _TIME_T_DEFINED
#endif
#ifndef _FSIZE_T_DEFINED
typedef unsigned long _fsize_t; /* Could be 64 bits for Win32 */
@ -29,15 +34,15 @@ int _rename (const char *oldname, const char *newname);
int _unlink(const char *file);
int _umask(int cmask);
int _chmod(const char *path, int mode);
int _dup( int handle );
int dup2( int handle1, int handle2 );
int dup( int handle );
//int dup2( int handle1, int handle2 );
int _isatty(int fd);
int _pipe(int *phandles, unsigned int psize, int textmode);
int _access(const char *filename, int flags);
int _open_osfhandle ( long osfhandle, int flags);
long _get_osfhandle( int filehandle );
int _open(const char *file, int mode,...);
int _close(int fd);
int close(int fd);
int _read(int fd, void *buffer, int length);
int _write(int fd, const void *buffer, unsigned count);
long _lseek(int handle, long offset, int origin);
@ -58,12 +63,14 @@ int _findclose( long handle );
#define read _read
#define write _write
#define umask _umask
#define dup _dup
//#define dup _dup
#define isatty _isatty
#define access _access
#define pipe _pipe
#define setmode _setmode
#define lseek _lseek
#define _close close
#endif

View file

@ -77,7 +77,7 @@ int _open(const char *file, int mode, va_list arg)
return (int)h;
}
int _close(int fd)
int close(int fd)
{
CloseHandle( (HANDLE)fd );
return 0;
@ -185,18 +185,18 @@ int _chmod(const char *path, int mode)
/* WinCE doesn't have dup and dup2. */
/* so, we cannot use missing/dup2.c. */
int _dup( int handle )
int dup( int handle )
{
errno = EBADF;
return -1;
}
/*
int dup2( int handle1, int handle2 )
{
errno = EBADF;
return -1;
}
*/
int _isatty(int fd)
{
if( fd==(int)_fileno(stdin) ||

35
wince/mkexports.rb Normal file
View file

@ -0,0 +1,35 @@
#!./miniruby -s
SYM = {}
objs = ARGV.collect {|s| p s+'\n'; s.tr('/', '\\') }
IO.foreach("|dumpbin -symbols " + objs.join(' ')) do |l|
next if /^[0-9A-F]+ 0+ UNDEF / =~ l
next unless l.sub!(/.*\sExternal\s+\|\s+/, '')
if ARGV[1]=="sh3"
if l.sub!(/^_/, '') # _ で始まるならtrue
next if /@.*@/ =~ l || /@[0-9a-f]{16}$/ =~ l # かつ、@ とか混じったら next
elsif !l.sub!(/^(\S+) \([^@?\`\']*\)$/, '\1') # _ ではじまっていなくて、@ とか混じっていたらnext
next
end
else
next if /@.*@/ =~ l || /@[0-9a-f]{16}$/ =~ l # かつ、@ とか混じったら next
end
SYM[l.strip] = true
end
exports = []
if $name
exports << "Name " + $name
elsif $library
exports << "Library " + $library
end
exports << "Description " + $description.dump if $description
exports << "EXPORTS" << SYM.keys.sort
if $output
open($output, 'w') {|f| f.puts exports.join("\n")}
else
puts exports.join("\n")
end

View file

@ -1,813 +0,0 @@
EXPORTS
ChildRecord
GetCurrentThreadHandle
Init_Array
Init_Bignum
Init_Comparable
Init_Dir
Init_Enumerable
Init_Exception
Init_File
Init_GC
Init_Hash
Init_IO
Init_Math
Init_Numeric
Init_Object
Init_Precision
Init_Proc
Init_Random
Init_Range
Init_Regexp
Init_String
Init_Struct
Init_Thread
Init_Time
Init_eval
Init_ext
Init_heap
Init_load
Init_marshal
Init_pack
Init_process
Init_signal
Init_stack
Init_sym
Init_var_tables
Init_version
NTLoginName
NtCmdGlob
NtCmdHead
NtCmdTail
NtFreeCmdLine
NtInitialize
NtMakeCmdVector
NtSyncProcess
SafeFree
acosh
asinh
atanh
chown
crypt
definekey
dln_find_exe
dln_find_file
dln_load
do_spawn
eaccess
encrypt
endhostent
endnetent
endprotoent
endservent
flock
getegid
geteuid
getgid
getlogin
getnetbyaddr
getnetbyname
getnetent
getprotoent
getservent
gettimeofday
getuid
ioctl
isInternalCmd
isinf
isnan
kill
link
pipe_exec
rb_Array
rb_Float
rb_Integer
rb_String
rb_add_method
rb_alias
rb_alias_variable
rb_any_to_s
rb_apply
rb_argv
rb_argv0
rb_ary_aref
rb_ary_assoc
rb_ary_clear
rb_ary_cmp
rb_ary_concat
rb_ary_delete
rb_ary_delete_at
rb_ary_dup
rb_ary_each
rb_ary_entry
rb_ary_freeze
rb_ary_includes
rb_ary_join
rb_ary_new
rb_ary_new2
rb_ary_new3
rb_ary_new4
rb_ary_plus
rb_ary_pop
rb_ary_push
rb_ary_rassoc
rb_ary_reverse
rb_ary_shift
rb_ary_sort
rb_ary_sort_bang
rb_ary_store
rb_ary_to_ary
rb_ary_to_s
rb_ary_unshift
rb_assoc_new
rb_attr
rb_autoload
rb_autoload_defined
rb_autoload_load
rb_backref_get
rb_backref_set
rb_backtrace
rb_big2dbl
rb_big2ll
rb_big2long
rb_big2str
rb_big2ull
rb_big2ulong
rb_big_2comp
rb_big_and
rb_big_clone
rb_big_divmod
rb_big_lshift
rb_big_minus
rb_big_mul
rb_big_norm
rb_big_or
rb_big_plus
rb_big_pow
rb_big_rand
rb_big_xor
rb_block_given_p
rb_bug
rb_cArray
rb_cBignum
rb_cClass
rb_cData
rb_cDir
rb_cFalseClass
rb_cFile
rb_cFixnum
rb_cFloat
rb_cHash
rb_cIO
rb_cInteger
rb_cModule
rb_cNilClass
rb_cNumeric
rb_cObject
rb_cProc
rb_cRange
rb_cRegexp
rb_cString
rb_cStruct
rb_cSymbol
rb_cThread
rb_cTime
rb_cTrueClass
rb_call_inits
rb_call_super
rb_catch
rb_check_convert_type
rb_check_frozen
rb_check_safe_str
rb_check_type
rb_class2name
rb_class_boot
rb_class_inherited
rb_class_instance_methods
rb_class_new
rb_class_new_instance
rb_class_path
rb_class_private_instance_methods
rb_class_protected_instance_methods
rb_class_public_instance_methods
rb_class_real
rb_class_tbl
rb_clear_cache
rb_cmpint
rb_compile_cstr
rb_compile_error
rb_compile_error_append
rb_compile_file
rb_compile_string
rb_const_assign
rb_const_defined
rb_const_defined_at
rb_const_get
rb_const_get_at
rb_const_list
rb_const_set
rb_convert_type
rb_copy_generic_ivar
rb_cstr2inum
rb_cstr_to_dbl
rb_cstr_to_inum
rb_cv_get
rb_cv_set
rb_cvar_defined
rb_cvar_get
rb_cvar_set
rb_data_object_alloc
rb_dbl2big
rb_dbl_cmp
rb_default_rs
rb_define_alias
rb_define_attr
rb_define_class
rb_define_class_id
rb_define_class_under
rb_define_class_variable
rb_define_const
rb_define_global_const
rb_define_global_function
rb_define_hooked_variable
rb_define_method
rb_define_method_id
rb_define_module
rb_define_module_function
rb_define_module_id
rb_define_module_under
rb_define_private_method
rb_define_protected_method
rb_define_readonly_variable
rb_define_singleton_method
rb_define_variable
rb_define_virtual_variable
rb_defout
rb_disable_super
rb_dvar_curr
rb_dvar_defined
rb_dvar_push
rb_dvar_ref
rb_eArgError
rb_eEOFError
rb_eException
rb_eFatal
rb_eFloatDomainError
rb_eIOError
rb_eIndexError
rb_eInterrupt
rb_eLoadError
rb_eNameError
rb_eNoMemError
rb_eNoMethodError
rb_eNotImpError
rb_eRangeError
rb_eRuntimeError
rb_eScriptError
rb_eSecurityError
rb_eSignal
rb_eStandardError
rb_eSyntaxError
rb_eSystemCallError
rb_eSystemExit
rb_eTypeError
rb_eZeroDivError
rb_each
rb_enable_super
rb_ensure
rb_env_path_tainted
rb_eof_error
rb_eql
rb_equal
rb_error_frozen
rb_eval_cmd
rb_eval_string
rb_eval_string_protect
rb_eval_string_wrap
rb_exc_fatal
rb_exc_new
rb_exc_new2
rb_exc_new3
rb_exc_raise
rb_exec_end_proc
rb_exit
rb_extend_object
rb_f_autoload
rb_f_exec
rb_f_global_variables
rb_f_kill
rb_f_lambda
rb_f_require
rb_f_sprintf
rb_f_trace_var
rb_f_untrace_var
rb_fatal
rb_fdopen
rb_file_const
rb_file_open
rb_file_s_expand_path
rb_file_sysopen
rb_find_file
rb_find_file_ext
rb_fix2int
rb_fix2str
rb_float_new
rb_fopen
rb_frame_last_func
rb_free_generic_ivar
rb_frozen_class_p
rb_fs
rb_funcall
rb_funcall2
rb_funcall3
rb_gc
rb_gc_call_finalizer_at_exit
rb_gc_disable
rb_gc_enable
rb_gc_force_recycle
rb_gc_mark
rb_gc_mark_frame
rb_gc_mark_global_tbl
rb_gc_mark_locations
rb_gc_mark_maybe
rb_gc_mark_parser
rb_gc_mark_threads
rb_gc_mark_trap_list
rb_gc_register_address
rb_gc_stack_start
rb_gc_start
rb_gc_unregister_address
rb_generic_ivar_table
rb_get_kcode
rb_getc
rb_gets
rb_glob
rb_global_entry
rb_global_variable
rb_globi
rb_gv_get
rb_gv_set
rb_gvar_defined
rb_gvar_get
rb_gvar_set
rb_hash
rb_hash_aref
rb_hash_aset
rb_hash_delete
rb_hash_delete_if
rb_hash_freeze
rb_hash_new
rb_hash_reject_bang
rb_hash_select
rb_id2name
rb_id_attrset
rb_include_module
rb_inspect
rb_inspecting_p
rb_int2big
rb_int2inum
rb_intern
rb_interrupt
rb_invalid_str
rb_io_addstr
rb_io_binmode
rb_io_check_closed
rb_io_check_readable
rb_io_check_writable
rb_io_close
rb_io_eof
rb_io_fptr_finalize
rb_io_fread
rb_io_getc
rb_io_gets
rb_io_mode_flags
rb_io_print
rb_io_printf
rb_io_puts
rb_io_synchronized
rb_io_taint_check
rb_io_unbuffered
rb_io_ungetc
rb_io_wait_readable
rb_io_wait_writable
rb_io_write
rb_is_class_id
rb_is_const_id
rb_is_instance_id
rb_is_junk_id
rb_is_local_id
rb_iter_break
rb_iterate
rb_iterator_p
rb_iv_get
rb_iv_set
rb_ivar_defined
rb_ivar_get
rb_ivar_set
rb_jump_tag
rb_kcode
rb_last_status
rb_lastline_get
rb_lastline_set
rb_ll2big
rb_ll2inum
rb_load
rb_load_fail
rb_load_file
rb_load_path
rb_load_protect
rb_loaderror
rb_mComparable
rb_mEnumerable
rb_mErrno
rb_mFileTest
rb_mGC
rb_mKernel
rb_mMath
rb_mPrecision
rb_mProcess
rb_make_metaclass
rb_mark_end_proc
rb_mark_generic_ivar
rb_mark_generic_ivar_tbl
rb_mark_hash
rb_mark_tbl
rb_marshal_dump
rb_marshal_load
rb_match_busy
rb_mem_clear
rb_memcicmp
rb_memcmp
rb_memerror
rb_method_boundp
rb_mod_ancestors
rb_mod_class_variables
rb_mod_clone
rb_mod_const_at
rb_mod_const_of
rb_mod_constants
rb_mod_dup
rb_mod_include_p
rb_mod_included_modules
rb_mod_module_eval
rb_mod_name
rb_mod_remove_const
rb_mod_remove_cvar
rb_module_new
rb_name_class
rb_name_error
rb_newobj
rb_node_newnode
rb_notimplement
rb_num2dbl
rb_num2fix
rb_num2int
rb_num2ll
rb_num2long
rb_num2ull
rb_num2ulong
rb_num_coerce_bin
rb_num_zerodiv
rb_obj_alloc
rb_obj_as_string
rb_obj_call_init
rb_obj_class
rb_obj_clone
rb_obj_dup
rb_obj_freeze
rb_obj_id
rb_obj_id_obsolete
rb_obj_instance_eval
rb_obj_instance_variables
rb_obj_is_instance_of
rb_obj_is_kind_of
rb_obj_remove_instance_variable
rb_obj_singleton_methods
rb_obj_taint
rb_obj_tainted
rb_obj_type
rb_obj_untaint
rb_origenviron
rb_output_fs
rb_output_rs
rb_p
rb_parser_append_print
rb_parser_while_loop
rb_path2class
rb_path_check
rb_proc_exec
rb_proc_new
rb_proc_times
rb_progname
rb_prohibit_interrupt
rb_protect
rb_protect_inspect
rb_provide
rb_provided
rb_quad_pack
rb_quad_unpack
rb_raise
rb_range_beg_len
rb_range_new
rb_read_check
rb_read_pending
rb_reg_adjust_startpos
rb_reg_last_match
rb_reg_match
rb_reg_match2
rb_reg_match_last
rb_reg_match_post
rb_reg_match_pre
rb_reg_mbclen2
rb_reg_new
rb_reg_nth_defined
rb_reg_nth_match
rb_reg_options
rb_reg_quote
rb_reg_regcomp
rb_reg_regsub
rb_reg_search
rb_remove_method
rb_require
rb_rescue
rb_rescue2
rb_reserved_word
rb_respond_to
rb_rs
rb_scan_args
rb_secure
rb_set_class_path
rb_set_end_proc
rb_set_kcode
rb_set_safe_level
rb_singleton_class
rb_singleton_class_attached
rb_singleton_class_clone
rb_source_filename
rb_stderr
rb_stdin
rb_stdout
rb_str2cstr
rb_str2inum
rb_str_append
rb_str_associate
rb_str_associated
rb_str_buf_append
rb_str_buf_cat
rb_str_buf_cat2
rb_str_buf_new
rb_str_buf_new2
rb_str_cat
rb_str_cat2
rb_str_cmp
rb_str_concat
rb_str_dump
rb_str_dup
rb_str_dup_frozen
rb_str_freeze
rb_str_hash
rb_str_inspect
rb_str_intern
rb_str_modify
rb_str_new
rb_str_new2
rb_str_new3
rb_str_new4
rb_str_new5
rb_str_plus
rb_str_resize
rb_str_setter
rb_str_split
rb_str_substr
rb_str_times
rb_str_to_dbl
rb_str_to_inum
rb_str_to_str
rb_str_update
rb_str_upto
rb_string_value
rb_string_value_ptr
rb_struct_alloc
rb_struct_aref
rb_struct_aset
rb_struct_define
rb_struct_getmember
rb_struct_iv_get
rb_struct_new
rb_svar
rb_sym_all_symbols
rb_sys_fail
rb_sys_warning
rb_syswait
rb_tainted_str_new
rb_tainted_str_new2
rb_thread_alone
rb_thread_atfork
rb_thread_create
rb_thread_critical
rb_thread_current
rb_thread_fd_close
rb_thread_fd_writable
rb_thread_interrupt
rb_thread_list
rb_thread_local_aref
rb_thread_local_aset
rb_thread_main
rb_thread_pending
rb_thread_polling
rb_thread_run
rb_thread_schedule
rb_thread_select
rb_thread_signal_raise
rb_thread_sleep
rb_thread_sleep_forever
rb_thread_stop
rb_thread_tick
rb_thread_trap_eval
rb_thread_wait_fd
rb_thread_wait_for
rb_thread_wakeup
rb_throw
rb_time_interval
rb_time_new
rb_time_timeval
rb_to_id
rb_to_int
rb_trap_exec
rb_trap_exit
rb_trap_immediate
rb_trap_pending
rb_trap_restore_mask
rb_uint2big
rb_uint2inum
rb_ull2big
rb_ull2inum
rb_undef
rb_undef_method
rb_w32_accept
rb_w32_asynchronize
rb_w32_bind
rb_w32_close
rb_w32_closedir
rb_w32_connect
rb_w32_enter_critical
rb_w32_fclose
rb_w32_fdclr
rb_w32_fdisset
rb_w32_fdset
rb_w32_free_environ
rb_w32_get_environ
rb_w32_get_osfhandle
rb_w32_getc
rb_w32_getcwd
rb_w32_getenv
rb_w32_gethostbyaddr
rb_w32_gethostbyname
rb_w32_gethostname
rb_w32_getpeername
rb_w32_getpid
rb_w32_getprotobyname
rb_w32_getprotobynumber
rb_w32_getservbyname
rb_w32_getservbyport
rb_w32_getsockname
rb_w32_getsockopt
rb_w32_ioctlsocket
rb_w32_leave_critical
rb_w32_listen
rb_w32_main_context
rb_w32_opendir
rb_w32_putc
rb_w32_readdir
rb_w32_recv
rb_w32_recvfrom
rb_w32_rename
rb_w32_rewinddir
rb_w32_seekdir
rb_w32_select
rb_w32_send
rb_w32_sendto
rb_w32_setsockopt
rb_w32_shutdown
rb_w32_sleep
rb_w32_socket
rb_w32_stat
rb_w32_strerror
rb_w32_telldir
rb_w32_times
rb_waitpid
rb_warn
rb_warning
rb_with_disable_interrupt
rb_yield
re_mbctab
re_set_syntax
ruby__end__seen
ruby_add_suffix
ruby_class
ruby_cleanup
ruby_current_node
ruby_debug
ruby_dln_librefs
ruby_dyna_vars
ruby_errinfo
ruby_eval_tree
ruby_eval_tree_begin
ruby_exec
ruby_finalize
ruby_frame
ruby_getcwd
ruby_ignorecase
ruby_in_compile
ruby_in_eval
ruby_incpush
ruby_init
ruby_init_loadpath
ruby_inplace_mode
ruby_nerrs
ruby_options
ruby_parser_stack_on_heap
ruby_process_options
ruby_prog_init
ruby_qsort
ruby_re_adjust_startpos
ruby_re_compile_fastmap
ruby_re_compile_pattern
ruby_re_copy_registers
ruby_re_free_pattern
ruby_re_free_registers
ruby_re_match
ruby_re_mbcinit
ruby_re_search
ruby_re_set_casetable
ruby_run
ruby_safe_level
ruby_scan_hex
ruby_scan_oct
ruby_scope
ruby_script
ruby_set_argv
ruby_set_current_source
ruby_setenv
ruby_show_copyright
ruby_show_version
ruby_sourcefile
ruby_sourceline
ruby_stack_check
ruby_stack_length
ruby_stop
ruby_strdup
ruby_strtod
ruby_top_self
ruby_unsetenv
ruby_verbose
ruby_xcalloc
ruby_xfree
ruby_xmalloc
ruby_xrealloc
ruby_yychar
ruby_yydebug
ruby_yylval
ruby_yyparse
setgid
sethostent
setnetent
setprotoent
setservent
setuid
st_add_direct
st_cleanup_safe
st_copy
st_delete
st_delete_safe
st_foreach
st_free_table
st_init_numtable
st_init_numtable_with_size
st_init_strtable
st_init_strtable_with_size
st_init_table
st_init_table_with_size
st_insert
st_lookup
wait
waitpid
yycheck
yydefred
yydgoto
yyerrflag
yygindex
yylen
yylhs
yyname
yynerrs
yyrindex
yyrule
yysindex
yyss
yyssp
yytable
yyval
yyvs
yyvsp
wce_SetCommandLine

View file

@ -4,11 +4,13 @@
#define _P_WAIT 0
#define _P_NOWAIT 1
#define _P_OVERLAY 2
#define _P_DETACH 4
#define P_WAIT _P_WAIT
#define P_NOWAIT _P_NOWAIT
#define P_DETACH _P_DETACH
#define P_OVERLAY _P_OVERLAY
#ifndef _INTPTR_T_DEFINED
typedef int intptr_t;

97
wince/resource.rb Normal file
View file

@ -0,0 +1,97 @@
#!./miniruby -sI.
require 'rbconfig'
CONFIG = Config::MAKEFILE_CONFIG
fversion = "#{CONFIG['MAJOR']},#{CONFIG['MINOR']},#{CONFIG['TEENY']},0"
$ruby_name ||= CONFIG["RUBY_INSTALL_NAME"]
$rubyw_name ||= CONFIG["RUBYW_INSTALL_NAME"] || $ruby_name.sub(/ruby/, '\&w')
$so_name ||= CONFIG["RUBY_SO_NAME"]
icons = {}
def icons.find(path)
if File.directory?(path)
Dir.open(File.expand_path(path)) do |d|
d.grep(/\.ico$/i) {|i| self[$`] = i}
end
else
self[File.basename(path, '.ico')] = path
end
self
end
if ARGV.empty?
icons.find('.')
else
ARGV.each {|i| icons.find(i)}
end
ruby_icon = rubyw_icon = nil
[$ruby_name, 'ruby'].each do |i|
if i = icons.delete(i)
ruby_icon = "1 ICON DISCARDABLE "+i.dump+"\n"
break
end
end
[$rubyw_name, 'rubyw'].each do |i|
if i = icons.delete(i)
rubyw_icon = "1 ICON DISCARDABLE "+i.dump+"\n"
break
end
end
dll_icons = []
icons.keys.sort.each do |i|
dll_icons << "#{dll_icons.size + 1} ICON DISCARDABLE "+icons[i].dump+"\n"
end
[ # base name extension file type icons
[$ruby_name, CONFIG["EXEEXT"], 'VFT_APP', ruby_icon],
[$rubyw_name, CONFIG["EXEEXT"], 'VFT_APP', rubyw_icon],
[$so_name, '.dll', 'VFT_DLL', dll_icons],
].each do |base, ext, type, icons|
open(base + '.rc', "w") { |f|
f.binmode if /mingw/ =~ RUBY_PLATFORM
f.print <<EOF
#ifndef __BORLANDC__
#include <windows.h>
#include <winver.h>
#endif
#{icons}
VS_VERSION_INFO VERSIONINFO
FILEVERSION #{fversion}
PRODUCTVERSION #{fversion}
FILEFLAGSMASK 0x3fL
FILEFLAGS 0x0L
FILEOS VOS__WINDOWS32
FILETYPE #{type}
FILESUBTYPE VFT2_UNKNOWN
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "000004b0"
BEGIN
VALUE "FileDescription", "Ruby interpreter\\0"
VALUE "FileVersion", "#{fversion}\\0"
VALUE "Home Page", "http://www.ruby-lang.org/\\0"
VALUE "InternalName", "#{base + ext}\\0"
VALUE "LegalCopyright", "Copyright (C) 1993-2003 Yukihiro Matsumoto\\0"
VALUE "OriginalFilename", "#{base + ext}\\0"
VALUE "Platform", "#{RUBY_PLATFORM}\\0"
VALUE "ProductVersion", "#{fversion}\\0"
VALUE "Release Date", "#{RUBY_RELEASE_DATE}\\0"
VALUE "Version", "#{RUBY_VERSION}\\0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x0, 0x4b0
END
END
EOF
}
end

184
wince/setup.mak Normal file
View file

@ -0,0 +1,184 @@
# -*- makefile -*-
!if "$(srcdir)" != ""
WIN32DIR = $(srcdir)/win32
!elseif "$(WIN32DIR)" == "win32"
srcdir = .
!elseif "$(WIN32DIR)" == "$(WIN32DIR:/win32=)/win32"
srcdir = $(WIN32DIR:/win32=)
!else
srcdir = $(WIN32DIR)/..
!endif
OS = mswin32
RT = msvcrt
INCLUDE = !include
APPEND = echo>>$(MAKEFILE)
!ifdef MAKEFILE
MAKE = $(MAKE) -f $(MAKEFILE)
!else
MAKEFILE = Makefile
!endif
ARCH = PROCESSOR_ARCHITECTURE
CPU = PROCESSOR_LEVEL
CPP = cl -nologo -EP
all: -prologue- -generic- -epilogue-
i386-$(OS): -prologue- -i386- -epilogue-
i486-$(OS): -prologue- -i486- -epilogue-
i586-$(OS): -prologue- -i586- -epilogue-
i686-$(OS): -prologue- -i686- -epilogue-
alpha-$(OS): -prologue- -alpha- -epilogue-
# CE
mips-hpc2k-wince: -prologue- -mips- -hpc2k- -epilogue-
mips-ppc-wince: -prologue- -mips- -ppc- -epilogue-
mips-hpcpro-wince: -prologue- -mips- -hpcpro- -epilogue-
arm-hpc2k-wince: -prologue- -arm- -hpc2k- -epilogue-
arm-ppc-wince: -prologue- -arm- -ppc- -epilogue-
arm-hpcpro-wince: -prologue- -arm- -hpcpro- -epilogue-
sh3-ppc-wince: -prologue- -sh3- -ppc- -epilogue-
sh3-hpcpro-wince: -prologue- -sh3- -hpcpro2- -epilogue-
sh4-hpcpro-wince: -prologue- -sh4- -hpcpro2- -epilogue-
-prologue-: nul
@type << > $(MAKEFILE)
### Makefile for ruby $(OS) ###
srcdir = $(srcdir:\=/)
<<
@$(CPP) -I$(srcdir) <<"Creating $(MAKEFILE)" >> $(MAKEFILE)
#include "version.h"
MAJOR = RUBY_VERSION_MAJOR
MINOR = RUBY_VERSION_MINOR
TEENY = RUBY_VERSION_TEENY
<<
-generic-: nul
!if defined($(ARCH)) || defined($(CPU))
@type << >>$(MAKEFILE)
!if defined($(ARCH))
$(ARCH) = $(PROCESSOR_ARCHITECTURE)
!endif
!if defined($(CPU))
$(CPU) = $(PROCESSOR_LEVEL)
!endif
<<
!endif
-alpha-: nul
@$(APPEND) $(ARCH) = alpha
-ix86-: nul
@$(APPEND) $(ARCH) = x86
-i386-: -ix86-
@$(APPEND) $(CPU) = 3
-i486-: -ix86-
@$(APPEND) $(CPU) = 4
-i586-: -ix86-
@$(APPEND) $(CPU) = 5
-i686-: -ix86-
@$(APPEND) $(CPU) = 6
# CE
-mips- -arm- -sh3- -sh4-::
@$(APPEND) $(ARCH) = $(@:-=)
-mips- -arm-::
@$(APPEND) CC = cl$(@:-=)
-sh3- -sh4-::
@$(APPEND) CC = shcl
-arm-::
@$(APPEND) CECPUDEF = -DARM -D_ARM_
-mips-::
@$(APPEND) CECPUDEF = -DMIPS -D_MIPS_
-sh3-::
@$(APPEND) CECPUDEF = -DSHx -DSH3 -D_SH3_
-sh4-::
@$(APPEND) CECPUDEF = -DSHx -DSH4 -D_SH4_
-hpc2k-: -hpc2000-
-ppc-: "-MS Pocket PC-"
-hpcpro2-: "-MS HPC Pro-"
-hpcpro-: "-MS HPC Pro--"
-mswin32-:
@type << >>$(MAKEFILE)
OS = mswin32
RT = msvcrt
<<
-mswince-:
@type << >>$(MAKEFILE)
!ifdef CE_TOOLS_DIR
CE_TOOLS_DIR = $(CE_TOOLS_DIR)
!endif
!ifdef EMBEDDED_TOOLS_DIR
EMBEDDED_TOOLS_DIR = $(EMBEDDED_TOOLS_DIR)
!endif
OS = mswince
RT = $$(OS)
SUBSYSTEM = windowsce
<<
-mswince-3.00 -mswince-2.11: -mswince-
@type << >>$(MAKEFILE)
SUBSYSVERSION = $(@:-mswince-=)
PATH = $$(EMBEDDED_TOOLS_DIR)/common/evc/bin;$$(EMBEDDED_TOOLS_DIR)/EVC/WCE$$(SUBSYSVERSION:.=)/bin
<<
-hpc2000- "-MS Pocket PC-": -mswince-3.00
"-MS HPC Pro-" "-MS HPC Pro--": -mswince-2.11
#-hpc2000- -"MS Pocket PC"- "-MS HPC Pro-":
# @type << >>$(MAKEFILE)
#INCLUDE = $$(CE_TOOLS_DIR)/wce$$(SUBSYSVERSION:.=)/$(@:-=)/include
#LIB = $$(CE_TOOLS_DIR)/wce$$(SUBSYSVERSION:.=)/$(@:-=)/lib/$$(PROCESSOR_ARCHITECTURE)
#<<
-hpc2000-:
@type << >>$(MAKEFILE)
INCLUDE = $$(CE_TOOLS_DIR)/wce$$(SUBSYSVERSION:.=)/$(@:-=)/include
LIB = $$(CE_TOOLS_DIR)/wce$$(SUBSYSVERSION:.=)/$(@:-=)/lib/$$(PROCESSOR_ARCHITECTURE)
<<
"-MS Pocket PC-":
@type << >>$(MAKEFILE)
INCLUDE = $$(CE_TOOLS_DIR)/wce$$(SUBSYSVERSION:.=)/MS Pocket PC/include
LIB = $$(CE_TOOLS_DIR)/wce$$(SUBSYSVERSION:.=)/MS Pocket PC/lib/$$(PROCESSOR_ARCHITECTURE)
<<
"-MS HPC Pro--":
@type << >>$(MAKEFILE)
INCLUDE = $$(CE_TOOLS_DIR)/wce$$(SUBSYSVERSION:.=)/$(@:-=)/include
LIB = $$(CE_TOOLS_DIR)/wce$$(SUBSYSVERSION:.=)/$(@:-=)/lib
<<
-epilogue-: nul
@type << >>$(MAKEFILE)
!ifdef RUBY_INSTALL_NAME
RUBY_INSTALL_NAME = $(RUBY_INSTALL_NAME)
!else ifdef RUBY_SUFFIX
RUBY_INSTALL_NAME = ruby$(RUBY_SUFFIX)
!endif
!ifdef RUBY_SO_NAME
RUBY_SO_NAME = $(RUBY_SO_NAME)
!else
# RUBY_SO_NAME = $$(RT)-$$(RUBY_INSTALL_NAME)$$(MAJOR)$$(MINOR)
!endif
# prefix = /usr
# CFLAGS = -nologo $$(DEBUGFLAGS) $$(OPTFLAGS) $$(PROCESSOR_FLAG)
CPPFLAGS = -I. -I$$(srcdir) -I$$(srcdir)/missing -I$$(srcdir)/wince \
$$(CECPUDEF) -DUNDER_CE -D_WIN32_WCE=$$(SUBSYSVERSION:.=) \
-DFILENAME_MAX=MAX_PATH -DTLS_OUT_OF_INDEXES=0xFFFFFFFF \
-DBUFSIZ=512 -D_UNICODE -DUNICODE -DUNDER_CE
# STACK = 0x10000,0x1000
# LDFLAGS = $$(CFLAGS) -Fm
# XLDFLAGS =
# RFLAGS = -r
# EXTLIBS =
$(INCLUDE) $$(srcdir)/wince/Makefile.sub
<<
@echo type `$(MAKE)' to make ruby for $(OS).

View file

@ -22,7 +22,7 @@ FILE *freopen(const char *filename, const char *mode, FILE *file)
return fp;
}
FILE *_fdopen( int handle, const char *mode )
FILE *fdopen( int handle, const char *mode )
{
wchar_t *wmode;
FILE* fp;

View file

@ -1,22 +0,0 @@
/***************************************************************
stdlib.c
***************************************************************/
#include <windows.h>
char **environ;
extern char * rb_w32_getenv(const char *);
/* getenv should replace with rb_w32_getenv. */
char *getenv(const char *env)
{
return rb_w32_getenv(env);
}
char *_fullpath(char *absPath, const char *relPath,
size_t maxLength)
{
strcpy( absPath, relPath );
return absPath;
}

69
wince/string_wce.c Normal file
View file

@ -0,0 +1,69 @@
/***************************************************************
string.c
***************************************************************/
#include <windows.h>
#include "wince.h" /* for wce_mbtowc */
/* _strdup already exists in stdlib.h? */
char *strdup(const char * str)
{
char *p;
p = malloc( strlen(str)+1 );
strcpy( p, str );
return p;
}
char* strerror(int errno)
{
static char buf[32]="wince::strerror called.";
return buf;
}
/* strnicmp already exists in stdlib.h? */
int strnicmp( const char *s1, const char *s2, size_t count )
{
wchar_t *w1, *w2;
int n;
w1 = wce_mbtowc(s1);
w2 = wce_mbtowc(s2);
n = wcsnicmp(w1, w2, count);
free(w1);
free(w2);
return n;
}
#if _WIN32_WCE < 300
#include "..\missing\strtoul.c"
char *strrchr( const char *p, int c )
{
char *pp;
for( pp=(char*)p+strlen(p); pp!=p; p-- )
{
if( *pp==c ) break;
}
return pp==p ? NULL : pp;
}
int stricmp( const char *s1, const char *s2 )
{
wchar_t *w1, *w2;
int n;
w1 = wce_mbtowc(s1);
w2 = wce_mbtowc(s2);
n = wcsicmp(w1, w2);
free(w1);
free(w2);
return n;
}
#endif

View file

@ -22,7 +22,8 @@ int _stat(const char *filename, struct _stat *st)
WIN32_FIND_DATAW fd;
wchar_t *wfilename;
wfilename = wce_mbtowc(filename);
// wfilename = wce_mbtowc(filename);
wfilename = wce_replaceRelativeDir(filename);
dwAttribute = GetFileAttributesW(wfilename);
if(dwAttribute==0xFFFFFFFF)

View file

@ -14,7 +14,7 @@
#endif
#endif
int _utime(const char *f, struct utimbuf *t)
int utime(const char *f, struct utimbuf *t)
{
HANDLE h;
FILETIME atime={0}, mtime={0};

View file

@ -16,12 +16,12 @@ struct utimbuf
extern "C" {
#endif
int _utime(const char *f, struct utimbuf *t);
int utime(const char *f, struct utimbuf *t);
#ifdef __cplusplus
};
#endif
#define utime _utime
//#define utime _utime
#endif

View file

@ -1,5 +1,5 @@
#ifndef TIME_H
#define TIME_H 1
#ifndef _TIME_WINCE_H
#define _TIME_WINCE_H 1
#include <winbase.h>
#include <sys/types.h>

View file

@ -15,6 +15,8 @@
/* global for GetCommandLineA */
char *_commandLine;
extern char _currentdir[];
/* make up Win32API except wce_* functions. */
DWORD GetModuleFileNameA(
@ -23,18 +25,18 @@ DWORD GetModuleFileNameA(
{
LPWSTR lpFileNameW;
LPSTR mb;
size_t len;
size_t ret;
if( size==0 ) return 0;
lpFileNameW = (LPWSTR)malloc( size*sizeof(wchar_t) );
GetModuleFileNameW( hModule, lpFileNameW, size );
ret = GetModuleFileNameW( hModule, lpFileNameW, size );
mb = wce_wctomb(lpFileNameW);
len = min(strlen(mb),size);
strncpy(lpFileName, mb, len);
lpFileName[len-1] = '\0';
strcpy(lpFileName, mb);
free(mb);
free(lpFileNameW);
return 0;
return ret;
}
#if _WIN32_WCE < 300
@ -48,7 +50,7 @@ FARPROC GetProcAddressA(HMODULE hModule, LPCSTR lpProcName)
free( lpwProcName );
return p;
}
#endif
#endif
char * GetCommandLineA(void)
{
@ -448,6 +450,9 @@ HINSTANCE LoadLibraryA(LPCSTR libname)
HINSTANCE h;
LPWSTR wlibname;
// if starts ".\", replace current directory.
// wlibname = wce_replaceRelativeDir(libname);
wlibname = wce_mbtowc(libname);
h = LoadLibraryW(wlibname);
free(wlibname);
@ -461,6 +466,8 @@ HINSTANCE LoadLibraryExA(LPCSTR lpLibFileName, HANDLE hFile,
LPWSTR wlibname;
wlibname = wce_mbtowc(lpLibFileName);
// wlibname = wce_replaceRelativeDir(lpLibFileName);
#if _WIN32_WCE < 300
h = LoadLibraryW(wlibname);
#else
@ -503,6 +510,47 @@ int ReadDataPending()
}
/*---------------- helper functions. ---------------------------- */
FILE *wce_fopen( const char *fname, const char *mode )
{
TCHAR* tfname = wce_replaceRelativeDir(fname);
TCHAR* tmode = wce_mbtowc(mode);
FILE* fp = _tfopen(tfname, tmode);
free(tfname); free(tmode);
return fp;
}
void wce_SetCurrentDir()
{
WCHAR tbuf[MAX_PATH+1]={0};
WCHAR *tp;
char *buf;
GetModuleFileNameW( NULL, tbuf, MAX_PATH );
tp = _tcsrchr( tbuf, '\\' );
if( tp!=NULL ) *tp=_T('\0');
buf = wce_wctomb(tbuf);
strcpy( _currentdir, buf );
free(buf);
}
TCHAR *wce_replaceRelativeDir(const char* str)
{
TCHAR *tbuf;
if( 2<=strlen(str) && str[0]=='.' &&
(str[1]=='/' || str[1]=='\\') )
{
char *buf;
int len = strlen(str) + strlen(_currentdir);
buf = malloc( len+1 );
sprintf(buf, "%s%s", _currentdir, &str[1]);
tbuf = wce_mbtowc(buf);
free(buf);
}
else
tbuf = wce_mbtowc(str);
return tbuf;
}
/* char -> wchar_t */
wchar_t* wce_mbtowc(const char* a)

View file

@ -56,81 +56,53 @@ extern "C" {
/* Win32 API redifinition. */
#ifdef GetCommandLine
#undef GetCommandLine
#define GetCommandLine GetCommandLineA
#endif
#ifdef SetFileAttributes
#undef SetFileAttributes
#define SetFileAttributes SetFileAttributesA
#endif
#ifdef GetFileAttributes
#undef GetFileAttributes
#define GetFileAttributes GetFileAttributesA
#endif
#ifdef FormatMessage
#undef FormatMessage
#define FormatMessage FormatMessageA
#endif
#ifdef GetModuleFileName
#undef GetModuleFileName
#define GetModuleFileName GetModuleFileNameA
#endif
#ifdef CreateFile
#undef CreateFile
#define CreateFile CreateFileA
#endif
#ifdef MoveFile
#undef MoveFile
#define MoveFile MoveFileA
#endif
#ifdef DeleteFile
#undef DeleteFile
#define DeleteFile DeleteFileA
#endif
#ifdef CreateProcess
#undef CreateProcess
#define CreateProcess CreateProcessA
#endif
#ifdef CharNext
#undef CharNext
#define CharNext CharNextA
#endif
#ifdef CharPrev
#undef CharPrev
#define CharPrev CharPrevA
#endif
#ifdef WIN32_FIND_DATA
#undef WIN32_FIND_DATA
#define WIN32_FIND_DATA WIN32_FIND_DATAA
#endif
#ifdef FindFirstFile
#undef FindFirstFile
#define FindFirstFile FindFirstFileA
#endif
#ifdef FindNextFile
#undef FindNextFile
#define FindNextFile FindNextFileA
#endif
/* stdio.c */
FILE *freopen(const char *filename, const char *mode, FILE *file);
FILE *_fdopen( int handle, const char *mode );
FILE *fdopen( int handle, const char *mode );
#define fdopen _fdopen
//#define fdopen _fdopen
/* stdlib.c */
char *getenv(const char *charstuff);
@ -141,9 +113,12 @@ char *strdup(const char * str);
/* char *strerror(int errno); */
int strnicmp( const char *s1, const char *s2, size_t count );
#define strnicmp _strnicmp
//#define strnicmp _strnicmp
#define stricmp _stricmp
/* for win32.c */
FARPROC GetProcAddressX(HMODULE hModule, LPCSTR lpProcName);
BOOL MoveFileEx(LPCSTR oldname, LPCSTR newname, DWORD dwFlags);
BOOL DuplicateHandle(
HANDLE source_process, HANDLE source,
@ -186,6 +161,8 @@ char* wce_wctomb(const wchar_t* w);
/* other helpers. */
void wce_SetCommandLine(LPCWSTR wcmd);
void wce_FreeCommandLine(void);
TCHAR *wce_replaceRelativeDir(const char* str);
void wce_SetCurrentDir();
#if _WIN32_WCE < 300
/* for Handheld PC Pro. */

View file

@ -4,12 +4,15 @@
extern int main(int, char**, char**);
int WINAPI
WinMain(HINSTANCE current, HINSTANCE prev, LPWSTR wcmd, int showcmd)
{
/* wchar_t -> char */
wce_SetCommandLine(wcmd);
wce_SetCurrentDir();
/* main. */
return main(0, NULL, NULL);
}