summaryrefslogtreecommitdiff
path: root/bcc32
diff options
context:
space:
mode:
Diffstat (limited to 'bcc32')
-rw-r--r--bcc32/Makefile.sub542
-rw-r--r--bcc32/README.bcc32123
-rw-r--r--bcc32/configure.bat11
-rw-r--r--bcc32/mkexports.rb26
-rw-r--r--bcc32/setup.mak50
5 files changed, 752 insertions, 0 deletions
diff --git a/bcc32/Makefile.sub b/bcc32/Makefile.sub
new file mode 100644
index 0000000000..9ef83105cc
--- /dev/null
+++ b/bcc32/Makefile.sub
@@ -0,0 +1,542 @@
+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
+!ifndef RUBYW_INSTALL_NAME
+RUBYW_INSTALL_NAME = $(RUBY_INSTALL_NAME:ruby=rubyw)
+!elif "$(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
+!ifndef RUBY_SO_NAME
+RUBY_SO_NAME = rubybcc
+!endif
+!ifndef icondirs
+!ifdef ICONDIRS
+icondirs=$(ICONDIRS)
+!endif
+!endif
+!ifdef icondirs
+icondirs=$(icondirs:\=/)
+iconinc=-I$(icondirs: = -I)
+!endif
+###############
+
+VPATH = $(srcdir):$(srcdir)/missing
+.SUFFIXES: .y
+
+!ifndef CC
+CC = bcc32
+!endif
+!ifndef RC
+RC = brc32
+!endif
+!ifndef YACC
+YACC = byacc
+!endif
+PURIFY =
+AUTOCONF = autoconf
+
+!if !defined(PROCESSOR_ARCHITECTURE) || "$(PROCESSOR_ARCHITECTURE)" == "x86"
+!ifndef PROCESSOR_LEVEL
+PROCESSOR_LEVEL = 5
+!endif
+PROCESSOR_FLAG = -$(PROCESSOR_LEVEL)
+CPU = i$(PROCESSOR_LEVEL)86
+ARCH = i$(PROCESSOR_LEVEL)86
+!else
+CPU = $(PROCESSOR_ARCHITECTURE)
+ARCH = $(PROCESSOR_ARCHITECTURE)
+!endif
+!ifndef DEBUGFLAGS
+DEBUGFLAGS =
+!endif
+!ifndef OPTFLAGS
+OPTFLAGS = -O
+!endif
+OS = bccwin32
+
+!ifndef prefix
+prefix = /usr
+!endif
+!ifndef DESTDIR
+DESTDIR = $(prefix)
+!endif
+!ifndef CFLAGS
+CFLAGS = -DNT=1 $(DEBUGFLAGS) $(OPTFLAGS) $(PROCESSOR_FLAG) -w-aus -w-par -w-pro
+!endif
+!ifndef CPPFLAGS
+CPPFLAGS = -I. -I$(srcdir) -I$(srcdir)missing -DLIBRUBY_SO=\"$(LIBRUBY_SO)\"
+!endif
+!ifndef LDFLAGS
+LDFLAGS = $(CFLAGS)
+!endif
+!ifndef XLDFLAGS
+XLDFLAGS =
+!endif
+!ifndef RFLAGS
+RFLAGS = -r
+!endif
+!ifndef EXTLIBS
+EXTLIBS = # cw32.lib
+!endif
+LIBS = $(EXTLIBS)
+MISSING = acosh.obj crypt.obj win32.obj
+
+!ifndef STACK
+STACK = 0x2000000
+!endif
+
+LDSHARED = $(CC) -lS:$(STACK)
+LINK = $(LDSHARED) -WC
+LINK_W = $(LDSHARED) -W
+LINK_SO = $(LDSHARED) -WD
+
+DLDFLAGS =
+SOLIBS =
+
+EXEEXT = .exe
+PROGRAM=$(RUBY_INSTALL_NAME)$(EXEEXT)
+WPROGRAM=$(RUBYW_INSTALL_NAME)$(EXEEXT)
+RUBYDEF = $(RUBY_SO_NAME).def
+MINIRUBY=miniruby$(EXEEXT)
+
+ORGLIBPATH = $(LIB)
+
+#### End of system configuration section. ####
+
+LIBRUBY_A = lib$(RUBY_INSTALL_NAME).lib
+LIBRUBY_SO = $(RUBY_SO_NAME).dll
+LIBRUBY = $(RUBY_SO_NAME).lib
+LIBRUBYARG = $(LIBRUBY)
+
+EXTOBJS = dmyext.obj
+
+MAINOBJ = main.obj
+WINMAINOBJ = winmain.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)
+
+all: miniruby$(EXEEXT) rbconfig.rb ext/extmk.rb \
+ $(LIBRUBY) $(MISCLIBS)
+ @.\miniruby$(EXEEXT) -Cext extmk.rb
+
+ruby: $(PROGRAM)
+rubyw: $(WPROGRAM)
+lib: $(LIBRUBY)
+dll: $(LIBRUBY_SO)
+
+config: config.h config.status
+
+config.h: Makefile $(srcdir)bcc32/Makefile.sub
+ @echo Creating config.h
+ type > $@ &&|
+\#define HAVE_PROTOTYPES 1
+\#define HAVE_STDARG_PROTOTYPES 1
+/* \#define HAVE_ATTR_NORETURN 1 */
+\#define NORETURN(x) x
+\#define TOKEN_PASTE(x,y) x\#\#y
+\#define inline __inline
+/* \#define HAVE_DIRENT_H 1 */
+/* \#define HAVE_UNISTD_H 1 */
+\#define HAVE_STDLIB_H 1
+\#define HAVE_LIMITS_H 1
+/* \#define HAVE_SYS_FILE_H 1 */
+\#define HAVE_FCNTL_H 1
+/* \#define HAVE_PWD_H 1 */
+/* \#define HAVE_SYS_TIME_H 1 */
+/* \#define HAVE_SYS_TIMES_H 1 */
+/* \#define HAVE_SYS_PARAM_H 1 */
+/* \#define HAVE_SYS_WAIT_H 1 */
+\#define HAVE_STRING_H 1
+/* \#define HAVE_UTIME_H 1 */
+\#define HAVE_MEMORY_H 1
+/* \#define HAVE_ST_BLKSIZE 1 */
+\#define HAVE_ST_RDEV 1
+/* \#define GETGROUPS_T gid_t */
+\#define GETGROUPS_T int
+\#define RETSIGTYPE void
+\#define HAVE_ALLOCA 1
+\#define vfork fork
+\#define HAVE_FMOD 1
+/* \#define HAVE_RANDOM 1 */
+\#define HAVE_WAITPID 1
+\#define HAVE_GETCWD 1
+/* \#define HAVE_TRUNCATE 1 */
+\#define HAVE_CHSIZE 1
+\#define HAVE_TIMES 1
+/* \#define HAVE_UTIMES 1 */
+/* \#define HAVE_FCNTL 1 */
+/* \#define HAVE_SETITIMER 1 */
+\#define HAVE_GETGROUPS 1
+/* \#define HAVE_SIGPROCMASK 1 */
+\#define HAVE_GETLOGIN 1
+\#define HAVE_TELLDIR 1
+\#define HAVE_SEEKDIR 1
+\#define HAVE_COSH 1
+\#define HAVE_SINH 1
+\#define HAVE_TANH 1
+
+\#define RSHIFT(x,y) ((x)>>y)
+\#define FILE_COUNT level
+\#define FILE_READPTR curp
+\#define DEFAULT_KCODE KCODE_NONE
+\#define DLEXT ".so"
+\#define DLEXT2 ".dll"
+\#define RUBY_LIB "/lib/ruby/1.7"
+\#define RUBY_SITE_LIB "/lib/ruby/site_ruby"
+\#define RUBY_SITE_LIB2 "/lib/ruby/site_ruby/1.7"
+\#define RUBY_PLATFORM "$(ARCH)-$(OS)"
+\#define RUBY_ARCHLIB "/lib/ruby/1.7/$(ARCH)-$(OS)"
+\#define RUBY_SITE_ARCHLIB "/lib/ruby/site_ruby/1.7/$(ARCH)-$(OS)"
+
+\#define SIZEOF_INT 4
+\#define SIZEOF_SHORT 2
+\#define SIZEOF_LONG 4
+\#define SIZEOF___INT64 8
+\#define SIZEOF_VOIDP 4
+\#define SIZEOF_FLOAT 4
+\#define SIZEOF_DOUBLE 8
+
+\#define HAVE_DECL_SYS_NERR 1
+\#define HAVE_ISINF 1
+\#define HAVE_ISNAN 1
+\#define HAVE_MEMMOVE 1
+\#define HAVE_MKDIR 1
+\#define HAVE_STRCASECMP 1
+\#define HAVE_STRNCASECMP 1
+\#define HAVE_STRCHR 1
+\#define HAVE_STRERROR 1
+\#define HAVE_STRFTIME 1
+\#define HAVE_STRSTR 1
+\#define HAVE_STRTOD 1
+\#define HAVE_STRTOUL 1
+|
+
+config.status: Makefile $(srcdir)bcc32/Makefile.sub $(MINIRUBY)
+ @echo Creating config.status
+ @$(MINIRUBY) -pe "~/@CFLAGS@/||$$_.sub!(/'$(CFLAGS)'/, '$$(CFLAGS)')" > $@ &&|
+# 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@,$(LDFLAGS),;t t
+s,@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@,cpp32,;t t
+s,@YACC@,$(YACC),;t t
+s,@RANLIB@,rem,;t t
+s,@AR@,tlib -nologo,;t t
+s,@LN_S@,$(LN_S),;t t
+s,@SET_MAKE@,$(SET_MAKE),;t t
+s,@LIBOBJS@, acosh.obj crypt.obj win32.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@,$$(CFLAGS),;t t
+s,@STATIC@,$(STATIC),;t t
+s,@CCDLFLAGS@,-DIMPORT,;t t
+s,@LDSHARED@,ilink32 -S:$(STACK) -Tpd,;t t
+s,@DLEXT@,so,;t t
+s,@DLEXT2@,dll,;t t
+s,@STRIP@,$(STRIP),;t t
+s,@EXTSTATIC@,$(EXTSTATIC),;t t
+s,@setup@,Setup,;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,@RUBY_SO_NAME@,$(RUBY_SO_NAME),;t t
+s,@LIBRUBY_A@,lib$$(RUBY_INSTALL_NAME).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@,$$(RUBY_SO_NAME).lib,;t t
+s,@SOLIBS@,$(SOLIBS),;t t
+s,@DLDLIBS@,$(DLDLIBS),;t t
+s,@ENABLE_SHARED@,yes,;t t
+s,@arch@,$(ARCH)-$(OS),;t t
+s,@sitedir@,$${prefix}/lib/ruby/site_ruby,;t t
+s,@configure_args@,--enable-shared $(configure_args),;t t
+s,@configure_input@,$$configure_input,;t t
+s,@srcdir@,$(srcdir),;t t
+s,@top_srcdir@,$(srcdir),;t t
+|
+
+ext/extmk.rb: $(srcdir)ext/extmk.rb.in config.status
+ @echo Creating ext/extmk.rb
+ @.\miniruby$(EXEEXT) $(srcdir)ext/configsub.rb \
+ -srcdir=$(srcdir) \
+ -install_name=$(RUBY_INSTALL_NAME) \
+ -so_name=$(RUBY_SO_NAME) \
+ -output=$@ $(srcdir)ext/extmk.rb.in
+
+miniruby$(EXEEXT): $(OBJS) $(MAINOBJ) $(EXTOBJS)
+ @echo $(EXTOBJS)
+ @echo $(LIBS)
+ $(LINK) -e$@ $(MAINOBJ) $(EXTOBJS) $(OBJS) $(LIBS)
+
+$(PROGRAM): $(MAINOBJ) $(LIBRUBY_SO) $(*:.exe=.res)
+ $(LINK) -e$@ $(MAINOBJ) $(LIBRUBYARG)
+
+$(WPROGRAM): $(MAINOBJ) $(WINMAINOBJ) $(LIBRUBY_SO) $(*:.exe=.res)
+ $(LINK_W) -e$@ $(MAINOBJ) $(WINMAINOBJ) $(LIBRUBYARG)
+
+$(LIBRUBY_A): $(OBJS) dmyext.obj
+ @-if exist $@ del $@
+ tlib $@ /a @&&|
+$(OBJS) dmyext.obj
+|
+
+$(LIBRUBY): $(LIBRUBY_SO)
+ implib $@ $(LIBRUBY_SO)
+
+$(LIBRUBY_SO): $(LIBRUBY_A) $(EXTOBJS) $(RUBYDEF) $(*:.dll=.res)
+ $(LINK_SO) -e$@ $(MAINOBJ) $(EXTOBJS) $(LIBRUBY_A) $(LIBS)
+
+$(RUBYDEF): $(LIBRUBY_A) miniruby$(EXEEXT)
+ .\miniruby$(EXEEXT) $(srcdir)bcc32/mkexports.rb -output=$@ $(LIBRUBY_A)
+
+install: rbconfig.rb
+ .\miniruby$(EXEEXT) $(srcdir)instruby.rb $(DESTDIR)
+
+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
+ @if exist *.tds del *.tds
+
+clean-ext:
+ @-.\miniruby$(EXEEXT) -Cext extmk.rb clean
+
+distclean: distclean-ext distclean-local
+
+distclean-local: clean-local
+ @if exist Makefile del Makefile
+ @if exist ext\extmk.rb del ext\extmk.rb
+ @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 pub.def del pub.def
+ @if exist $(RUBY_INSTALL_NAME).rc del $(RUBY_INSTALL_NAME).rc
+ @if exist $(RUBYW_INSTALL_NAME).rc del $(RUBYW_INSTALL_NAME).rc
+ @if exist $(LIBRUBY_SO).rc del $(LIBRUBY_SO).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 miniruby$(EXEEXT) del miniruby$(EXEEXT)
+
+distclean-ext:
+ @-.\miniruby$(EXEEXT) -Cext extmk.rb 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: miniruby$(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 $(LIBRUBY_SO).rc: rbconfig.rb
+ @.\miniruby$(EXEEXT) $(srcdir)win32/resource.rb \
+ -ruby_name=$(RUBY_INSTALL_NAME) \
+ -rubyw_name=$(RUBYW_INSTALL_NAME) \
+ -so_name=$(LIBRUBY_SO) \
+ . $(icondirs) $(srcdir)/win32
+
+#config.status: $(srcdir)configure
+# $(SHELL) .config.status --recheck
+
+.path.c = .;$(srcdir);$(srcdir)win32;$(srcdir)missing
+.path.h = .;$(srcdir);$(srcdir)win32;$(srcdir)missing
+.path.y = $(srcdir)
+
+.c.obj:
+ $(CC) $(CFLAGS) -I. $(CPPFLAGS) -c $(<:/=\)
+
+.rc.res:
+ $(RC) -I. -I$(<D) $(iconinc) -I$(srcdir)win32 $(RFLAGS) -fo$@ $(<:/=\)
+
+.y.c:
+ $(YACC) $(YFLAGS) $(<:\=/)
+ sed -e "s!^extern char \*getenv();!/* & */!;s/^\(#.*\)y\.tab/\1parse/" y.tab.c > $(@F)
+ @del y.tab.c
+
+parse.c: parse.y
+
+acosh.obj: acosh.c win32.h
+alloca.obj: alloca.c win32.h
+crypt.obj: crypt.c win32.h
+dup2.obj: dup2.c win32.h
+finite.obj: finite.c win32.h
+flock.obj: flock.c win32.h
+isinf.obj: isinf.c win32.h
+isnan.obj: isnan.c win32.h
+memcmp.obj: memcmp.c win32.h
+memmove.obj: memmove.c win32.h
+mkdir.obj: mkdir.c win32.h
+vsnprintf.obj: vsnprintf.c win32.h
+strcasecmp.obj: strcasecmp.c win32.h
+strncasecmp.obj: strncasecmp.c win32.h
+strchr.obj: strchr.c win32.h
+strdup.obj: strdup.c win32.h
+strerror.obj: strerror.c win32.h
+strftime.obj: strftime.c win32.h
+strstr.obj: strstr.c win32.h
+strtod.obj: strtod.c win32.h
+strtol.obj: strtol.c win32.h
+strtoul.obj: strtoul.c win32.h
+nt.obj: nt.c win32.h
+x68.obj: x68.c win32.h
+os2.obj: os2.c win32.h
+dl_os2.obj: dl_os2.c win32.h
+
+# when I use -I., there is confliction at "OpenFile"
+# so, set . into environment varible "include"
+win32.obj: win32.c win32.h
+
+###
+parse.obj: parse.c ruby.h config.h defines.h intern.h env.h node.h st.h regex.h util.h lex.c win32.h
+###
+array.obj: array.c ruby.h config.h defines.h intern.h win32.h
+bignum.obj: bignum.c ruby.h config.h defines.h intern.h win32.h
+class.obj: class.c ruby.h config.h defines.h intern.h node.h st.h win32.h
+compar.obj: compar.c ruby.h config.h defines.h intern.h win32.h
+dir.obj: dir.c ruby.h config.h defines.h intern.h win32.h
+dln.obj: dln.c config.h defines.h dln.h win32.h
+dmyext.obj: dmyext.c win32.h
+enum.obj: enum.c ruby.h config.h defines.h intern.h win32.h
+error.obj: error.c ruby.h config.h defines.h intern.h env.h win32.h
+eval.obj: eval.c ruby.h config.h defines.h intern.h node.h env.h rubysig.h st.h dln.h win32.h
+file.obj: file.c ruby.h config.h defines.h intern.h rubyio.h rubysig.h win32.h
+gc.obj: gc.c ruby.h config.h defines.h intern.h rubysig.h st.h node.h env.h re.h regex.h win32.h
+hash.obj: hash.c ruby.h config.h defines.h intern.h st.h rubysig.h util.h win32.h
+inits.obj: inits.c ruby.h config.h defines.h intern.h win32.h
+io.obj: io.c ruby.h config.h defines.h intern.h rubyio.h rubysig.h env.h win32.h
+main.obj: main.c ruby.h config.h defines.h intern.h win32.h
+marshal.obj: marshal.c ruby.h config.h defines.h intern.h rubyio.h st.h win32.h
+prec.obj: prec.c ruby.h config.h defines.h intern.h win32.h
+math.obj: math.c ruby.h config.h defines.h intern.h win32.h
+numeric.obj: numeric.c ruby.h config.h defines.h intern.h win32.h
+object.obj: object.c ruby.h config.h defines.h intern.h st.h win32.h
+pack.obj: pack.c ruby.h config.h defines.h intern.h win32.h
+process.obj: process.c ruby.h config.h defines.h intern.h rubysig.h st.h win32.h
+random.obj: random.c ruby.h config.h defines.h intern.h win32.h
+range.obj: range.c ruby.h config.h defines.h intern.h win32.h
+re.obj: re.c ruby.h config.h defines.h intern.h re.h regex.h win32.h
+regex.obj: regex.c config.h regex.h util.h win32.h
+ruby.obj: ruby.c ruby.h config.h defines.h intern.h dln.h util.h win32.h
+signal.obj: signal.c ruby.h config.h defines.h intern.h rubysig.h win32.h
+sprintf.obj: sprintf.c ruby.h config.h defines.h intern.h win32.h
+st.obj: st.c config.h st.h win32.h
+string.obj: string.c ruby.h config.h defines.h intern.h re.h regex.h win32.h
+struct.obj: struct.c ruby.h config.h defines.h intern.h win32.h
+time.obj: time.c ruby.h config.h defines.h intern.h win32.h
+util.obj: util.c ruby.h config.h defines.h intern.h util.h win32.h
+variable.obj: variable.c ruby.h config.h defines.h intern.h env.h node.h st.h win32.h
+version.obj: version.c ruby.h config.h defines.h intern.h version.h win32.h
diff --git a/bcc32/README.bcc32 b/bcc32/README.bcc32
new file mode 100644
index 0000000000..fe55046013
--- /dev/null
+++ b/bcc32/README.bcc32
@@ -0,0 +1,123 @@
+=begin
+
+= How to build ruby using Borland C++
+
+== Requirement
+
+(1) Borland C++ 5.0 or later.
+
+(2) If you want to run `((%make clean%))' or `((%make distclean%))'
+ properly, you must install UNIX compatible `((%rm%))' command on
+ your ((|PATH|)).
+
+(3) Please set environment variable (({INCLUDE})), (({LIB})), (({PATH}))
+ to run required commands properly from the command line.
+
+ Note: building ruby requires following commands.
+ * make
+ * bcc
+ * tlib
+ * ilink
+
+== How to compile and install
+
+(1) Execute bcc32\configure.bat on your build directory.
+ ex. c:\ruby-1.6.7>bcc32\configure.bat
+
+(2) Change ((|RUBY_INSTALL_NAME|)) and ((|RUBY_SO_NAME|)) in (({Makefile}))
+ if you want to change the name of the executable files.
+ And add ((|RUBYW_INSTALL_NAME|)) to change the name of the
+ executable without console window if also you want.
+
+(3) Run `((%make%))'
+
+(4) Run `((%make test%))'
+
+(5) Run `((%make DESTDIR=<install_directory> install%))'
+
+ This command will create following directories and install 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'.
+ The ((|<PLATFORM>|)) is usually `(({i586-bccwin32}))'.
+
+== Icons
+
+Any icon files(*.ico) in the build directory, directories specified with
+((|icondirs|)) make variable and (({win32})) directory under the ruby
+source directory will be included in DLL or executable files, according
+to their base names.
+ $(RUBY_INSTALL_NAME).ico or ruby.ico --> $(RUBY_INSTALL_NAME).exe
+ $(RUBYW_INSTALL_NAME).ico or rubyw.ico --> $(RUBYW_INSTALL_NAME).exe
+ the others --> $(RUBY_SO_NAME).dll
+
+Although no icons are distributed with the ruby source or in the official
+site, you can use anything you like. For example, followings are written
+in Japanese, but you can download at least.
+
+* ((<URL:http://member.nifty.ne.jp/ueivu/rubyico.html>)) or
+ ((<zipped icons|URL:http://member.nifty.ne.jp/ueivu/Ruby_ico.zip>))
+* ((<URL:http://homepage1.nifty.com/a_nakata/ruby/>)) or
+ ((<icon itself|URL:http://homepage1.nifty.com/a_nakata/ruby/RubyIcon.ico>))
+
+== Build examples
+
+* Build on the ruby source directory.
+
+ ex.)
+ ruby source directory: C:\ruby
+ build directory: C:\ruby
+ install directory: C:\usr\local
+
+ C:
+ cd \ruby
+ bcc32\configure
+ make
+ make test
+ make DESTDIR=/usr/local install
+
+* Build on the relative directory from the ruby source directory.
+
+ ex.)
+ ruby source directory: C:\ruby
+ build directory: C:\ruby\bccwin32
+ install directory: C:\usr\local
+
+ C:
+ cd \ruby
+ mkdir bccwin32
+ cd bccwin32
+ ..\bcc32\configure
+ make
+ make test
+ make 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\bcc32\configure
+ make
+ make test
+ make 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 (({MAKE})).
+((- you may call it a bug. -))
+
+=end
diff --git a/bcc32/configure.bat b/bcc32/configure.bat
new file mode 100644
index 0000000000..b9067c6688
--- /dev/null
+++ b/bcc32/configure.bat
@@ -0,0 +1,11 @@
+@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
+
+echo> ~tmp~.mak ####
+echo>> ~tmp~.mak conf = %0
+echo>> ~tmp~.mak $(conf:\=/):
+echo>> ~tmp~.mak @del ~tmp~.mak
+echo>> ~tmp~.mak make -Dbcc32dir="$(@D)" -f$(@D)/setup.mak %1
+make -f ~tmp~.mak
diff --git a/bcc32/mkexports.rb b/bcc32/mkexports.rb
new file mode 100644
index 0000000000..46edf190ee
--- /dev/null
+++ b/bcc32/mkexports.rb
@@ -0,0 +1,26 @@
+#!./miniruby -s
+
+SYM = {}
+objs = ARGV.collect {|s| s.tr('/', '\\')}
+system("tdump -oiPUBDEF -oiPUBD32 #{objs.join(' ')} > pub.def")
+
+IO.foreach('pub.def'){|l|
+ next unless /(PUBDEF|PUBD32)/ =~ l
+ /'(.*?)'/ =~ l
+ SYM[$1] = true
+}
+
+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
diff --git a/bcc32/setup.mak b/bcc32/setup.mak
new file mode 100644
index 0000000000..38c98133fb
--- /dev/null
+++ b/bcc32/setup.mak
@@ -0,0 +1,50 @@
+# -*- makefile -*-
+
+!if "$(bcc32dir)" == "bcc32/"
+srcdir = ./
+!elseif "$(bcc32dir)" == "../bcc32/"
+srcdir = ../
+!else
+srcdir = $(bcc32dir)../
+!endif
+
+OS = bccwin32
+
+all: ext makefile
+ @echo type `make' to make ruby for bccwin32.
+
+makefile: make_s make_e
+
+make_s:
+ @if exist makefile @del makefile
+ @echo ### makefile for ruby $(OS) ###> makefile
+ @echo srcdir = $(srcdir:\=/)>> makefile
+ @echo RUBY_INSTALL_NAME = ruby>> makefile
+ @echo RUBY_SO_NAME = $(OS)_$$(RUBY_INSTALL_NAME)17>> makefile
+
+make_e:
+ @echo !INCLUDE $$(srcdir)bcc32/makefile.sub>> makefile
+
+ext:
+ @if not exist $@\* mkdir $@
+
+pl3:
+ @echo PROCESSOR_LEVEL = 3 >> makefile
+
+pl4:
+ @echo PROCESSOR_LEVEL = 4 >> makefile
+
+pl5:
+ @echo PROCESSOR_LEVEL = 5 >> makefile
+
+pl6:
+ @echo PROCESSOR_LEVEL = 6 >> makefile
+
+3: ext make_s pl3 make_e
+
+4: ext make_s pl4 make_e
+
+5: ext make_s pl5 make_e
+
+6: ext make_s pl6 make_e
+