diff options
Diffstat (limited to 'bcc32')
-rw-r--r-- | bcc32/Makefile.sub | 542 | ||||
-rw-r--r-- | bcc32/README.bcc32 | 123 | ||||
-rw-r--r-- | bcc32/configure.bat | 11 | ||||
-rw-r--r-- | bcc32/mkexports.rb | 26 | ||||
-rw-r--r-- | bcc32/setup.mak | 50 |
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 + |