зеркало из https://github.com/github/ruby.git
new platform [bccwin32] merged.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2543 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
ceade7b926
Коммит
d0b3651906
16
ChangeLog
16
ChangeLog
|
@ -1,3 +1,19 @@
|
|||
Tue Jun 11 10:18:23 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
|
||||
|
||||
* new platform [bccwin32] merged.
|
||||
- create new folder bcc32
|
||||
- modify any files for bccwin32
|
||||
error.c, file.c, hash.c, io.c, instruby.rb,
|
||||
ext/extmk.rb.in,
|
||||
lib/mkmf.rb, lib/ftools.rb,
|
||||
ext/digest/defs.h,
|
||||
ext/dl/depend, ext/dl/dl.c, ext/dl/sym.c, ext/dl/extconf.rb,
|
||||
ext/socket/extconf.rb,
|
||||
ext/pty/extconf.rb,
|
||||
ext/tcltklib/extconf.rb
|
||||
ext/Win32API/Win32API.c,
|
||||
win32/dir.h, win32/win32.c, win32/win32.h, win32/resource.rb
|
||||
|
||||
Mon Jun 10 19:02:19 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
|
||||
|
||||
* numeric.c (fix_lshift): negative shift count means right shift.
|
||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||
|
3
error.c
3
error.c
|
@ -732,6 +732,9 @@ rb_sys_fail(mesg)
|
|||
rb_bug("rb_sys_fail() - errno == 0");
|
||||
}
|
||||
|
||||
#ifdef __BORLANDC__
|
||||
if (errno == EPIPE) return; // (*moriq*)
|
||||
#endif
|
||||
err = strerror(errno);
|
||||
if (mesg) {
|
||||
volatile VALUE tmp = rb_str_inspect(rb_str_new2(mesg));
|
||||
|
|
|
@ -148,6 +148,15 @@ Win32API_initialize(self, dllname, proc, import, export)
|
|||
return Qnil;
|
||||
}
|
||||
|
||||
#ifdef __BORLANDC__
|
||||
int c_m( FARPROC api, long* p )
|
||||
{
|
||||
long pp[16];
|
||||
memcpy( pp, p, 16*sizeof(long) );
|
||||
return api();
|
||||
}
|
||||
#endif
|
||||
|
||||
static VALUE
|
||||
Win32API_Call(argc, argv, obj)
|
||||
int argc;
|
||||
|
@ -175,6 +184,10 @@ Win32API_Call(argc, argv, obj)
|
|||
int nimport, timport, texport, i;
|
||||
int items;
|
||||
int ret;
|
||||
#ifdef __BORLANDC__
|
||||
long* ptr;
|
||||
long p[16];
|
||||
#endif
|
||||
|
||||
items = rb_scan_args(argc, argv, "0*", &args);
|
||||
|
||||
|
@ -192,6 +205,9 @@ Win32API_Call(argc, argv, obj)
|
|||
nimport, items);
|
||||
|
||||
if (0 < nimport) {
|
||||
#ifdef __BORLANDC__
|
||||
ptr = p + ( nimport - 1 );
|
||||
#endif
|
||||
for (i = nimport - 1; 0 <= i; i--) {
|
||||
VALUE str;
|
||||
import_type = rb_ary_entry(obj_import, i);
|
||||
|
@ -215,6 +231,9 @@ Win32API_Call(argc, argv, obj)
|
|||
#else
|
||||
#error
|
||||
#endif
|
||||
#elif defined(__BORLANDC__)
|
||||
*ptr = lParam;
|
||||
--ptr;
|
||||
#elif defined __GNUC__
|
||||
asm volatile ("pushl %0" :: "g" (lParam));
|
||||
#else
|
||||
|
@ -247,6 +266,9 @@ Win32API_Call(argc, argv, obj)
|
|||
#else
|
||||
#error
|
||||
#endif
|
||||
#elif defined(__BORLANDC__)
|
||||
*ptr = (long)pParam;
|
||||
--ptr;
|
||||
#elif defined __GNUC__
|
||||
asm volatile ("pushl %0" :: "g" (pParam));
|
||||
#else
|
||||
|
@ -275,16 +297,28 @@ Win32API_Call(argc, argv, obj)
|
|||
#else
|
||||
switch (texport) {
|
||||
case _T_NUMBER:
|
||||
#if defined(__BORLANDC__)
|
||||
Return = INT2NUM((long)c_m(ApiFunction, p));
|
||||
#else
|
||||
ApiFunctionNumber = (ApiNumber *) ApiFunction;
|
||||
Return = INT2NUM(ApiFunctionNumber());
|
||||
#endif
|
||||
break;
|
||||
case _T_POINTER:
|
||||
#if defined(__BORLANDC__)
|
||||
Return = rb_str_new2((char *)c_m(ApiFunction, p));
|
||||
#else
|
||||
ApiFunctionPointer = (ApiPointer *) ApiFunction;
|
||||
Return = rb_str_new2((char *)ApiFunctionPointer());
|
||||
#endif
|
||||
break;
|
||||
case _T_INTEGER:
|
||||
#if defined(__BORLANDC__)
|
||||
Return = INT2NUM((int)c_m(ApiFunction, p));
|
||||
#else
|
||||
ApiFunctionInteger = (ApiInteger *) ApiFunction;
|
||||
Return = INT2NUM(ApiFunctionInteger());
|
||||
#endif
|
||||
break;
|
||||
case _T_VOID:
|
||||
default:
|
||||
|
|
|
@ -27,6 +27,8 @@
|
|||
typedef unsigned long long uint64_t;
|
||||
# elif defined(_MSC_VER)
|
||||
typedef unsigned _int64 uint64_t;
|
||||
# elif defined(__BORLANDC__)
|
||||
typedef unsigned __int64 uint64_t;
|
||||
# else
|
||||
# define NO_UINT64_T
|
||||
# endif
|
||||
|
|
|
@ -6,19 +6,19 @@ LDSHARED_TEST = $(LDSHARED) $(LDFLAGS) test/test.o -o test/libtest.so $(LOCAL_LI
|
|||
libtest.so: test/libtest.so
|
||||
|
||||
test/libtest.so: test/test.o test/libtest.def
|
||||
$(RUBY) -rftools -e 'ARGV.each{|d|File.mkpath(File.dirname(d))}' $@
|
||||
$(RUBY) -rftools -e 'ARGV.each do|d|File.mkpath(File.dirname(d))end' $@
|
||||
$(LDSHARED_TEST:dl.def=test/libtest.def)
|
||||
|
||||
test/test.o: $(srcdir)/test/test.c
|
||||
@$(RUBY) -rftools -e 'File.mkpath(*ARGV)' test
|
||||
$(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/test/test.c -o $@
|
||||
|
||||
test:: dl.so libtest.so .force
|
||||
test:: dl.so libtest.so force
|
||||
$(RUBY) -I. -I$(srcdir)/lib $(srcdir)/test/test.rb
|
||||
|
||||
.force:
|
||||
force:
|
||||
|
||||
.PHONY: .force test
|
||||
.PHONY: force test
|
||||
|
||||
allclean: distclean
|
||||
@rm -f $(CLEANFILES) $(DISTCLEANFILES)
|
||||
|
|
|
@ -626,7 +626,7 @@ rb_dl_callback(int argc, VALUE argv[], VALUE self)
|
|||
rb_assoc_new(INT2NUM(rettype),INT2NUM(entry)),
|
||||
rb_assoc_new(type,proc));
|
||||
sprintf(fname, "rb_dl_callback_func_%d_%d", rettype, entry);
|
||||
return rb_dlsym_new(rb_dl_callback_table[rettype][entry], fname, STR2CSTR(type));
|
||||
return rb_dlsym_new((void (*)())rb_dl_callback_table[rettype][entry], fname, STR2CSTR(type));
|
||||
}
|
||||
|
||||
static VALUE
|
||||
|
|
|
@ -176,6 +176,21 @@ $INSTALLFILES = [
|
|||
["dl.h", "$(archdir)$(target_prefix)", ""],
|
||||
]
|
||||
|
||||
if /bccwin32/ =~ RUBY_PLATFORM
|
||||
srcdir = $top_srcdir + "/ext/dl/"
|
||||
if !FileTest.exist?( srcdir+"dl.def.org" )
|
||||
File.copy( srcdir+"dl.def", srcdir+"dl.def.org" )
|
||||
open( srcdir+"dl.def.org" ){ |f|
|
||||
open( "dl.def", "w" ) { |g|
|
||||
g.print f.gets
|
||||
while line = f.gets
|
||||
g.print "_", line
|
||||
end
|
||||
}
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
create_makefile('dl')
|
||||
rescue SystemExit
|
||||
# do nothing
|
||||
|
|
|
@ -140,7 +140,7 @@ rb_dlsym_s_new(int argc, VALUE argv[], VALUE self)
|
|||
sname = NIL_P(name) ? NULL : StringValuePtr(name);
|
||||
stype = NIL_P(type) ? NULL : StringValuePtr(type);
|
||||
|
||||
val = rb_dlsym_new(saddr, sname, stype);
|
||||
val = rb_dlsym_new((void (*)())saddr, sname, stype);
|
||||
|
||||
if( val != Qnil ){
|
||||
rb_obj_call_init(val, argc, argv);
|
||||
|
|
123
ext/extmk.rb.in
123
ext/extmk.rb.in
|
@ -28,7 +28,7 @@ $extlist = []
|
|||
$libdir = "@libdir@"
|
||||
|
||||
$top_srcdir = "@top_srcdir@"
|
||||
if $top_srcdir !~ "^/"
|
||||
if $top_srcdir !~ ("^" + File::SEPARATOR)
|
||||
# get absolute path
|
||||
$top_srcdir = File.expand_path($top_srcdir)
|
||||
end
|
||||
|
@ -72,6 +72,8 @@ if RUBY_PLATFORM == "m68k-human"
|
|||
end
|
||||
if /mswin32/ =~ RUBY_PLATFORM
|
||||
OUTFLAG = '-Fe'
|
||||
elsif /bccwin32/ =~ RUBY_PLATFORM
|
||||
OUTFLAG = '-o'
|
||||
else
|
||||
OUTFLAG = '-o '
|
||||
end
|
||||
|
@ -101,7 +103,7 @@ def try_link0(src, opt="")
|
|||
cfile.print src
|
||||
cfile.close
|
||||
ldflags = $LDFLAGS
|
||||
if /mswin32/ =~ RUBY_PLATFORM and !$LIBPATH.empty?
|
||||
if /mswin32|bccwin32/ =~ RUBY_PLATFORM and !$LIBPATH.empty?
|
||||
ENV['LIB'] = ($LIBPATH + [ORIG_LIBPATH]).compact.join(';')
|
||||
else
|
||||
ldflags = ldflags.dup
|
||||
|
@ -110,7 +112,7 @@ def try_link0(src, opt="")
|
|||
begin
|
||||
xsystem(Config::expand(format(LINK, $CFLAGS, $CPPFLAGS, ldflags, opt, $LOCAL_LIBS)))
|
||||
ensure
|
||||
ENV['LIB'] = ORIG_LIBPATH if /mswin32/ =~ RUBY_PLATFORM
|
||||
ENV['LIB'] = ORIG_LIBPATH if /mswin32|bccwin32/ =~ RUBY_PLATFORM
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -119,6 +121,9 @@ def try_link(src, opt="")
|
|||
try_link0(src, opt)
|
||||
ensure
|
||||
rm_f "conftest*"
|
||||
if /bccwin32/ =~ RUBY_PLATFORM
|
||||
rm_f "c0x32*"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -162,7 +167,7 @@ end
|
|||
|
||||
def install_rb(mfile, srcdir = nil)
|
||||
libdir = "lib"
|
||||
libdir = srcdir + "/" + libdir if srcdir
|
||||
libdir = File.join(srcdir, libdir) if srcdir
|
||||
path = []
|
||||
dir = []
|
||||
if File.directory? libdir
|
||||
|
@ -186,7 +191,7 @@ def install_rb(mfile, srcdir = nil)
|
|||
end
|
||||
|
||||
def append_library(libs, lib)
|
||||
if /mswin32/ =~ RUBY_PLATFORM
|
||||
if /mswin32|bccwin32/ =~ RUBY_PLATFORM
|
||||
lib + ".lib " + libs
|
||||
else
|
||||
"-l" + lib + " " + libs
|
||||
|
@ -196,7 +201,7 @@ end
|
|||
def have_library(lib, func="main")
|
||||
if func && func != ""
|
||||
libs = append_library($libs, lib)
|
||||
if /mswin32|mingw/ =~ RUBY_PLATFORM
|
||||
if /mswin32|bccwin32|mingw/ =~ RUBY_PLATFORM
|
||||
return true if lib == 'm'
|
||||
r = try_link(<<"SRC", libs)
|
||||
#include <windows.h>
|
||||
|
@ -249,7 +254,7 @@ end
|
|||
def have_func(func, header=nil)
|
||||
libs = $libs
|
||||
src =
|
||||
if /mswin32|mingw/ =~ RUBY_PLATFORM
|
||||
if /mswin32|bccwin32|mingw/ =~ RUBY_PLATFORM
|
||||
r = <<"SRC"
|
||||
#include <windows.h>
|
||||
#include <winsock.h>
|
||||
|
@ -293,7 +298,7 @@ def arg_config(config, default=nil)
|
|||
unless defined? $configure_args
|
||||
$configure_args = {}
|
||||
args = "@configure_args@"
|
||||
if /mswin32|mingw/ =~ RUBY_PLATFORM and ENV["CONFIGURE_ARGS"]
|
||||
if /mswin32|bccwin32|mingw/ =~ RUBY_PLATFORM and ENV["CONFIGURE_ARGS"]
|
||||
args << " " << ENV["CONFIGURE_ARGS"]
|
||||
end
|
||||
for arg in Shellwords::shellwords(args)
|
||||
|
@ -386,9 +391,16 @@ def create_makefile(target)
|
|||
end
|
||||
end
|
||||
defflag = target + ".def"
|
||||
elsif RUBY_PLATFORM =~ /bccwin32/
|
||||
deffile = target + '.def'
|
||||
if not File.exist? target + '.def'
|
||||
open(deffile, 'wb') do |f|
|
||||
f.print "EXPORTS\n", "_Init_", target, "\n"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if RUBY_PLATFORM =~ /mswin32/
|
||||
if RUBY_PLATFORM =~ /mswin32|bccwin32/
|
||||
libpath = $LIBPATH.join(';')
|
||||
else
|
||||
$LIBPATH.each {|d| $DLDFLAGS << " -L" << d}
|
||||
|
@ -397,7 +409,7 @@ def create_makefile(target)
|
|||
end
|
||||
end
|
||||
|
||||
$srcdir = $top_srcdir + "/ext/" + $mdir
|
||||
$srcdir = File.join($top_srcdir,"ext",$mdir)
|
||||
mfile = open("Makefile", "w")
|
||||
mfile.binmode if /mingw/ =~ RUBY_PLATFORM
|
||||
mfile.printf "\
|
||||
|
@ -415,8 +427,15 @@ CC = @CC@
|
|||
|
||||
CFLAGS = %s #{CFLAGS} #$CFLAGS
|
||||
CPPFLAGS = -I$(topdir) -I$(hdrdir) %s #$CPPFLAGS
|
||||
DLDFLAGS = #$DLDFLAGS #$LDFLAGS
|
||||
LDSHARED = @LDSHARED@ #{defflag}
|
||||
#{
|
||||
if /bccwin32/ =~ RUBY_PLATFORM
|
||||
"DLDFLAGS = #$LDFLAGS -L" + '"$(topdir:/=\\)"' + "\n" +
|
||||
"LDSHARED = @LDSHARED@\n"
|
||||
else
|
||||
"DLDFLAGS = #$DLDFLAGS #$LDFLAGS\n" +
|
||||
"LDSHARED = @LDSHARED@ #{defflag}\n"
|
||||
end
|
||||
}
|
||||
", if $static then "" else "@CCDLFLAGS@" end, $defs.join(" ")
|
||||
mfile.puts "LIBPATH = #{libpath}" if libpath
|
||||
|
||||
|
@ -440,9 +459,13 @@ target_prefix = #{target_prefix}
|
|||
|
||||
"
|
||||
mfile.printf "LOCAL_LIBS = %s %s\n", $LOCAL_LIBS, $local_flags
|
||||
mfile.printf "LIBS = %s\n", $libs
|
||||
if /bccwin32/ =~ RUBY_PLATFORM
|
||||
mfile.printf "LIBS = $(topdir:/=\\)\\%s\n", $libs
|
||||
else
|
||||
mfile.printf "LIBS = %s\n", $libs
|
||||
end
|
||||
mfile.printf "OBJS = "
|
||||
if !$objs then
|
||||
if !$objs or (/bccwin32/ =~ RUBY_PLATFORM) then
|
||||
$objs = []
|
||||
for f in Dir["#{$top_srcdir}/ext/#{$mdir}/*.{#{SRC_EXT.join(%q{,})}}"]
|
||||
f = File.basename(f)
|
||||
|
@ -457,9 +480,13 @@ target_prefix = #{target_prefix}
|
|||
mfile.printf $objs.join(" ")
|
||||
mfile.printf "\n"
|
||||
|
||||
ruby_interpreter = "$(topdir)/miniruby@EXEEXT@"
|
||||
if /nmake/i =~ $make
|
||||
ruby_interpreter = '$(topdir:/=\)\miniruby@EXEEXT@'
|
||||
if /bccwin32/ =~ RUBY_PLATFORM
|
||||
ruby_interpreter = '$(topdir:/=\)/miniruby@EXEEXT@'
|
||||
else
|
||||
ruby_interpreter = "$(topdir)/miniruby@EXEEXT@"
|
||||
if /nmake/i =~ $make
|
||||
ruby_interpreter = '$(topdir:/=\)\miniruby@EXEEXT@'
|
||||
end
|
||||
end
|
||||
if defined? CROSS_COMPILING
|
||||
ruby_interpreter = "@MINIRUBY@"
|
||||
|
@ -476,8 +503,16 @@ EXEEXT = @EXEEXT@
|
|||
|
||||
all: $(DLLIB)
|
||||
|
||||
clean:; @$(RM) *.#{$OBJEXT} *.so *.sl *.#{$LIBEXT} $(DLLIB)
|
||||
@$(RM) *.ilk *.exp *.pdb *.bak $(CLEANFILES)
|
||||
clean:
|
||||
@$(RM) *.#{$OBJEXT} *.so *.sl *.#{$LIBEXT} $(DLLIB)
|
||||
#{
|
||||
if /bccwin32/ =~ RUBY_PLATFORM
|
||||
" @$(RM) *.def *.ilc *.ild *.ilf *.ils *.map *.tds *.bak $(CLEANFILES)\n" +
|
||||
" @if exist $(target).def.org ren $(target).def.org $(target).def"
|
||||
else
|
||||
" @$(RM) *.ilk *.exp *.pdb *.bak $(CLEANFILES)"
|
||||
end
|
||||
}
|
||||
|
||||
distclean: clean
|
||||
@$(RM) Makefile extconf.h conftest.*
|
||||
|
@ -501,7 +536,11 @@ EOS
|
|||
mfile.printf "\n"
|
||||
|
||||
unless /mswin32/ =~ RUBY_PLATFORM
|
||||
src = '$<'
|
||||
if /bccwin32/=~ RUBY_PLATFORM
|
||||
src = '$(<:\\=/)'
|
||||
else
|
||||
src = '$<'
|
||||
end
|
||||
copt = cxxopt = ''
|
||||
else
|
||||
if /nmake/i =~ $make
|
||||
|
@ -513,6 +552,18 @@ EOS
|
|||
cxxopt = '-Tp'
|
||||
end
|
||||
unless /nmake/i =~ $make
|
||||
if /bccwin32/ =~ RUBY_PLATFORM
|
||||
mfile.print "
|
||||
{$(srcdir)}.cc{}.@OBJEXT@:
|
||||
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c #{cxxopt}#{src}
|
||||
{$(srcdir)}.cpp{}.@OBJEXT@:
|
||||
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c #{cxxopt}#{src}
|
||||
{$(srcdir)}.cxx{}.@OBJEXT@:
|
||||
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c #{cxxopt}#{src}
|
||||
{$(srcdir)}.c{}.@OBJEXT@:
|
||||
$(CC) $(CFLAGS) $(CPPFLAGS) -c #{copt}#{src}
|
||||
"
|
||||
end
|
||||
mfile.puts "
|
||||
.cc.@OBJEXT@:
|
||||
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c #{cxxopt}#{src}
|
||||
|
@ -561,14 +612,18 @@ $(DLLIB): $(OBJS)
|
|||
end
|
||||
elsif "@DLEXT@" != $OBJEXT
|
||||
mfile.print "$(DLLIB): $(OBJS)\n"
|
||||
if /mswin32/ =~ RUBY_PLATFORM
|
||||
if /nmake/i =~ $make
|
||||
mfile.print "\tset LIB=$(LIBPATH:/=\\);$(LIB)\n"
|
||||
else
|
||||
mfile.print "\tenv LIB='$(subst /,\\\\,$(LIBPATH));$(LIB)' \\\n"
|
||||
if /bccwin32/ =~ RUBY_PLATFORM
|
||||
mfile.print "\t$(LDSHARED) $(DLDFLAGS) C0D32.OBJ $(OBJS), $@,, CW32.LIB IMPORT32.LIB WS2_32.LIB $(LIBS), #{deffile}\n"
|
||||
else
|
||||
if /mswin32/ =~ RUBY_PLATFORM
|
||||
if /nmake/i =~ $make
|
||||
mfile.print "\tset LIB=$(LIBPATH:/=\\);$(LIB)\n"
|
||||
else
|
||||
mfile.print "\tenv LIB='$(subst /,\\\\,$(LIBPATH));$(LIB)' \\\n"
|
||||
end
|
||||
end
|
||||
mfile.print "\t$(LDSHARED) $(DLDFLAGS) #{OUTFLAG}$(DLLIB) $(OBJS) $(LIBS) $(LOCAL_LIBS)\n"
|
||||
end
|
||||
mfile.print "\t$(LDSHARED) $(DLDFLAGS) #{OUTFLAG}$(DLLIB) $(OBJS) $(LIBS) $(LOCAL_LIBS)\n"
|
||||
elsif RUBY_PLATFORM == "m68k-human"
|
||||
mfile.printf "\
|
||||
$(DLLIB): $(OBJS)
|
||||
|
@ -586,7 +641,11 @@ $(DLLIB): $(OBJS)
|
|||
mfile.printf "###\n"
|
||||
while line = dfile.gets()
|
||||
line.gsub!(/\.o\b/, ".#{$OBJEXT}")
|
||||
line.gsub!(/(\s)([^\s\/]+\.[ch])/, '\1{$(srcdir)}\2') if /nmake/i =~ $make
|
||||
if /bccwin32/ =~ RUBY_PLATFORM
|
||||
line.gsub!(/(\s)([^\s\/]+\.[ch])/, '\1{$(srcdir)}\2')
|
||||
else
|
||||
line.gsub!(/(\s)([^\s\/]+\.[ch])/, '\1{$(srcdir)}\2') if /nmake/i =~ $make
|
||||
end
|
||||
mfile.printf "%s", line.gsub('\$\(hdrdir\)/config.h', '$(topdir)/config.h')
|
||||
end
|
||||
dfile.close
|
||||
|
@ -613,6 +672,8 @@ def extmake(target)
|
|||
if /mswin32/ =~ RUBY_PLATFORM
|
||||
$LIBEXT = "lib"
|
||||
$local_flags = "-link /INCREMENTAL:no /EXPORT:Init_$(TARGET)"
|
||||
elsif /bccwin32/ =~ RUBY_PLATFORM
|
||||
$LIBEXT = "lib"
|
||||
end
|
||||
$LOCAL_LIBS = "" # to be assigned in extconf.rb
|
||||
$CFLAGS = ""
|
||||
|
@ -651,7 +712,11 @@ def extmake(target)
|
|||
$extlist.push [$static, File.basename($target)]
|
||||
end
|
||||
if $install
|
||||
system "#{$make} install DESTDIR=#{$destdir}"
|
||||
if /bccwin32/ =~ RUBY_PLATFORM
|
||||
system "#{$make} -DDESTDIR=#{$destdir} install"
|
||||
else
|
||||
system "#{$make} install DESTDIR=#{$destdir}"
|
||||
end
|
||||
elsif $clean
|
||||
system "#{$make} #{$clean}"
|
||||
else
|
||||
|
@ -691,7 +756,7 @@ for setup in ["@setup@", "#{$top_srcdir}/ext/@setup@"]
|
|||
next
|
||||
end
|
||||
target = line.split[0]
|
||||
target = target.downcase if /mswin32/ =~ RUBY_PLATFORM
|
||||
target = target.downcase if /mswin32|bccwin32/ =~ RUBY_PLATFORM
|
||||
$static_ext[target] = true
|
||||
end
|
||||
f.close
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
require 'mkmf'
|
||||
|
||||
if /mswin32|mingw/ !~ RUBY_PLATFORM
|
||||
if /mswin32|mingw|bccwin32/ !~ RUBY_PLATFORM
|
||||
have_header("sys/stropts.h")
|
||||
have_func("setresuid")
|
||||
have_header("libutil.h")
|
||||
|
|
|
@ -39,6 +39,10 @@ SRC
|
|||
end
|
||||
|
||||
case RUBY_PLATFORM
|
||||
when /bccwin32/
|
||||
test_func = "WSACleanup"
|
||||
have_library("ws2_32", "WSACleanup")
|
||||
have_func("closesocket")
|
||||
when /mswin32|mingw/
|
||||
test_func = "WSACleanup"
|
||||
have_library("wsock32", "WSACleanup")
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'mkmf'
|
||||
|
||||
if RUBY_PLATFORM !~ /mswin32|mingw|cygwin/
|
||||
if RUBY_PLATFORM !~ /mswin32|mingw|cygwin|bccwin32/
|
||||
have_library("nsl", "t_open")
|
||||
have_library("socket", "socket")
|
||||
have_library("dl", "dlopen")
|
||||
|
@ -22,7 +22,7 @@ def find_tcl(tcllib, stubs)
|
|||
func = stubs ? "Tcl_InitStubs" : "Tcl_FindExecutable"
|
||||
if tcllib
|
||||
find_library(tcllib, func, *paths)
|
||||
elsif RUBY_PLATFORM =~ /mswin32|mingw|cygwin/
|
||||
elsif RUBY_PLATFORM =~ /mswin32|mingw|cygwin|bccwin32/
|
||||
find_library("tcl", func, *paths) or
|
||||
find_library("tcl84", func, *paths) or
|
||||
find_library("tcl83", func, *paths) or
|
||||
|
@ -44,7 +44,7 @@ def find_tk(tklib, stubs)
|
|||
func = stubs ? "Tk_InitStubs" : "Tk_Init"
|
||||
if tklib
|
||||
find_library(tklib, func, *paths)
|
||||
elsif RUBY_PLATFORM =~ /mswin32|mingw|cygwin/
|
||||
elsif RUBY_PLATFORM =~ /mswin32|mingw|cygwin|bccwin32/
|
||||
find_library("tk", func, *paths) or
|
||||
find_library("tk84", func, *paths) or
|
||||
find_library("tk83", func, *paths) or
|
||||
|
@ -62,7 +62,7 @@ def find_tk(tklib, stubs)
|
|||
end
|
||||
|
||||
if have_header("tcl.h") && have_header("tk.h") &&
|
||||
(/mswin32|mingw|cygwin/ =~ RUBY_PLATFORM || find_library("X11", "XOpenDisplay",
|
||||
(/mswin32|mingw|cygwin|bccwin32/ =~ RUBY_PLATFORM || find_library("X11", "XOpenDisplay",
|
||||
"/usr/X11/lib", "/usr/X11R6/lib", "/usr/openwin/lib")) &&
|
||||
find_tcl(tcllib, stubs) &&
|
||||
find_tk(tklib, stubs)
|
||||
|
|
22
file.c
22
file.c
|
@ -179,7 +179,11 @@ static VALUE
|
|||
rb_stat_mode(self)
|
||||
VALUE self;
|
||||
{
|
||||
return UINT2NUM(get_stat(self)->st_mode);
|
||||
#ifdef __BORLANDC__
|
||||
return UINT2NUM((unsigned short)(get_stat(self)->st_mode));
|
||||
#else
|
||||
return UINT2NUM(get_stat(self)->st_mode);
|
||||
#endif
|
||||
}
|
||||
|
||||
static VALUE
|
||||
|
@ -544,6 +548,14 @@ test_l(obj, fname)
|
|||
#ifndef S_ISLNK
|
||||
# ifdef _S_ISLNK
|
||||
# define S_ISLNK(m) _S_ISLNK(m)
|
||||
# elif defined __BORLANDC__
|
||||
# ifdef _S_IFLNK
|
||||
# define S_ISLNK(m) (((unsigned short)(m) & S_IFMT) == _S_IFLNK)
|
||||
# else
|
||||
# ifdef S_IFLNK
|
||||
# define S_ISLNK(m) (((unsigned short)(m) & S_IFMT) == S_IFLNK)
|
||||
# endif
|
||||
# endif
|
||||
# else
|
||||
# ifdef _S_IFLNK
|
||||
# define S_ISLNK(m) ((m & S_IFMT) == _S_IFLNK)
|
||||
|
@ -573,6 +585,14 @@ test_S(obj, fname)
|
|||
#ifndef S_ISSOCK
|
||||
# ifdef _S_ISSOCK
|
||||
# define S_ISSOCK(m) _S_ISSOCK(m)
|
||||
# elif defined __BORLANDC__
|
||||
# ifdef _S_IFSOCK
|
||||
# define S_ISSOCK(m) (((unsigned short)(m) & S_IFMT) == _S_IFSOCK)
|
||||
# else
|
||||
# ifdef S_IFSOCK
|
||||
# define S_ISSOCK(m) (((unsigned short)(m) & S_IFMT) == S_IFSOCK)
|
||||
# endif
|
||||
# endif
|
||||
# else
|
||||
# ifdef _S_IFSOCK
|
||||
# define S_ISSOCK(m) ((m & S_IFMT) == _S_IFSOCK)
|
||||
|
|
12
hash.c
12
hash.c
|
@ -949,7 +949,11 @@ env_delete(obj, name)
|
|||
VALUE value = rb_tainted_str_new2(val);
|
||||
|
||||
ruby_setenv(nam, 0);
|
||||
#ifdef __BORLANDC__
|
||||
if (strcmpi(nam, "PATH") == 0 && !OBJ_TAINTED(name)) {
|
||||
#else
|
||||
if (strcmp(nam, "PATH") == 0 && !OBJ_TAINTED(name)) {
|
||||
#endif
|
||||
path_tainted = 0;
|
||||
}
|
||||
return value;
|
||||
|
@ -979,7 +983,11 @@ rb_f_getenv(obj, name)
|
|||
}
|
||||
env = getenv(nam);
|
||||
if (env) {
|
||||
#ifdef __BORLANDC__
|
||||
if (strcmpi(nam, "PATH") == 0 && !rb_env_path_tainted())
|
||||
#else
|
||||
if (strcmp(nam, "PATH") == 0 && !rb_env_path_tainted())
|
||||
#endif
|
||||
return rb_str_new2(env);
|
||||
return rb_tainted_str_new2(env);
|
||||
}
|
||||
|
@ -1013,7 +1021,11 @@ env_fetch(argc, argv)
|
|||
}
|
||||
return if_none;
|
||||
}
|
||||
#ifdef __BORLANDC__
|
||||
if (strcmpi(nam, "PATH") == 0 && !rb_env_path_tainted())
|
||||
#else
|
||||
if (strcmp(nam, "PATH") == 0 && !rb_env_path_tainted())
|
||||
#endif
|
||||
return rb_str_new2(env);
|
||||
return rb_tainted_str_new2(env);
|
||||
}
|
||||
|
|
|
@ -88,7 +88,7 @@ end
|
|||
for f in Dir["*.h"]
|
||||
File.install f, archlibdir, 0644, true
|
||||
end
|
||||
if RUBY_PLATFORM =~ /mswin32|mingw/
|
||||
if RUBY_PLATFORM =~ /mswin32|mingw|bccwin32/
|
||||
File.makedirs archlibdir + "/win32", true
|
||||
File.install "win32/win32.h", archlibdir + "/win32", 0644, true
|
||||
end
|
||||
|
|
3
io.c
3
io.c
|
@ -586,6 +586,9 @@ io_fread(ptr, len, f)
|
|||
case EAGAIN:
|
||||
#if defined(EWOULDBLOCK) && EWOULDBLOCK != EAGAIN
|
||||
case EWOULDBLOCK:
|
||||
#endif
|
||||
#ifdef __BORLANDC__
|
||||
case EPIPE:
|
||||
#endif
|
||||
return len - n;
|
||||
}
|
||||
|
|
|
@ -63,7 +63,7 @@ class << File
|
|||
to = catname(from, to)
|
||||
$stderr.print from, " -> ", to, "\n" if verbose
|
||||
|
||||
if RUBY_PLATFORM =~ /djgpp|cygwin|mswin32/ and FileTest.file? to
|
||||
if RUBY_PLATFORM =~ /djgpp|cygwin|mswin32|bccwin32/ and FileTest.file? to
|
||||
unlink to
|
||||
end
|
||||
fstat = stat(from)
|
||||
|
|
91
lib/mkmf.rb
91
lib/mkmf.rb
|
@ -65,7 +65,7 @@ else
|
|||
exit 1
|
||||
end
|
||||
$topdir = $hdrdir
|
||||
# $hdrdir.gsub!('/', '\\') if RUBY_PLATFORM =~ /mswin32/
|
||||
# $hdrdir.gsub!('/', '\\') if RUBY_PLATFORM =~ /mswin32|bccwin32/
|
||||
|
||||
CFLAGS = CONFIG["CFLAGS"]
|
||||
if RUBY_PLATFORM == "m68k-human"
|
||||
|
@ -78,6 +78,8 @@ $log = open('mkmf.log', 'w')
|
|||
|
||||
if /mswin32/ =~ RUBY_PLATFORM
|
||||
OUTFLAG = '-Fe'
|
||||
elsif /bccwin32/ =~ RUBY_PLATFORM
|
||||
OUTFLAG = '-o'
|
||||
else
|
||||
OUTFLAG = '-o '
|
||||
end
|
||||
|
@ -117,7 +119,7 @@ def try_link0(src, opt="")
|
|||
cfile.print src
|
||||
cfile.close
|
||||
ldflags = $LDFLAGS
|
||||
if /mswin32/ =~ RUBY_PLATFORM and !$LIBPATH.empty?
|
||||
if /mswin32|bccwin32/ =~ RUBY_PLATFORM and !$LIBPATH.empty?
|
||||
ENV['LIB'] = ($LIBPATH + [ORIG_LIBPATH]).compact.join(';')
|
||||
else
|
||||
$LDFLAGS = ldflags.dup
|
||||
|
@ -127,7 +129,7 @@ def try_link0(src, opt="")
|
|||
xsystem(Config.expand(format(LINK, $CFLAGS, $CPPFLAGS, $LDFLAGS, opt, $LOCAL_LIBS)))
|
||||
ensure
|
||||
$LDFLAGS = ldflags
|
||||
ENV['LIB'] = ORIG_LIBPATH if /mswin32/ =~ RUBY_PLATFORM
|
||||
ENV['LIB'] = ORIG_LIBPATH if /mswin32|bccwin32/ =~ RUBY_PLATFORM
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -136,6 +138,9 @@ def try_link(src, opt="")
|
|||
try_link0(src, opt)
|
||||
ensure
|
||||
rm_f "conftest*"
|
||||
if /bccwin32/ =~ RUBY_PLATFORM
|
||||
rm_f "c0x32*"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -219,7 +224,7 @@ def install_rb(mfile, dest, srcdir = nil)
|
|||
end
|
||||
|
||||
def append_library(libs, lib)
|
||||
if /mswin32/ =~ RUBY_PLATFORM
|
||||
if /mswin32|bccwin32/ =~ RUBY_PLATFORM
|
||||
lib + ".lib " + libs
|
||||
else
|
||||
"-l" + lib + " " + libs
|
||||
|
@ -232,7 +237,7 @@ def have_library(lib, func="main")
|
|||
|
||||
if func && func != ""
|
||||
libs = append_library($libs, lib)
|
||||
if /mswin32|mingw/ =~ RUBY_PLATFORM
|
||||
if /mswin32|bccwin32|mingw/ =~ RUBY_PLATFORM
|
||||
if lib == 'm'
|
||||
print "yes\n"
|
||||
return true
|
||||
|
@ -298,7 +303,7 @@ def have_func(func, header=nil)
|
|||
|
||||
libs = $libs
|
||||
src =
|
||||
if /mswin32|mingw/ =~ RUBY_PLATFORM
|
||||
if /mswin32|bccwin32|mingw/ =~ RUBY_PLATFORM
|
||||
r = <<"SRC"
|
||||
#include <windows.h>
|
||||
#include <winsock.h>
|
||||
|
@ -404,6 +409,10 @@ def with_destdir(dir)
|
|||
/^\$[\(\{]/ =~ dir ? dir : "$(DESTDIR)"+dir
|
||||
end
|
||||
|
||||
def winsep(s)
|
||||
s.tr('/', '\\')
|
||||
end
|
||||
|
||||
def create_makefile(target, srcprefix = nil)
|
||||
save_libs = $libs.dup
|
||||
save_libpath = $LIBPATH.dup
|
||||
|
@ -432,7 +441,14 @@ def create_makefile(target, srcprefix = nil)
|
|||
srcprefix ||= '$(srcdir)'
|
||||
Config::expand(srcdir = srcprefix.dup)
|
||||
defflag = ''
|
||||
if RUBY_PLATFORM =~ /cygwin|mingw/
|
||||
if RUBY_PLATFORM =~ /bccwin32/
|
||||
deffile = target + '.def'
|
||||
if not File.exist? deffile
|
||||
open(deffile, 'wb') do |f|
|
||||
f.print "EXPORTS\n", "_Init_", target, "\n"
|
||||
end
|
||||
end
|
||||
elsif RUBY_PLATFORM =~ /cygwin|mingw/
|
||||
deffile = target + '.def'
|
||||
if not File.exist? deffile
|
||||
if File.exist? File.join srcdir, deffile
|
||||
|
@ -446,7 +462,7 @@ def create_makefile(target, srcprefix = nil)
|
|||
defflag = deffile
|
||||
end
|
||||
|
||||
if RUBY_PLATFORM =~ /mswin32/
|
||||
if RUBY_PLATFORM =~ /mswin32|bccwin32/
|
||||
libpath = $LIBPATH.join(';')
|
||||
else
|
||||
$LIBPATH.each {|d| $DLDFLAGS << " -L" << d}
|
||||
|
@ -487,8 +503,15 @@ CC = #{CONFIG["CC"]}
|
|||
CFLAGS = #{CONFIG["CCDLFLAGS"]} #{CFLAGS} #{$CFLAGS}
|
||||
CPPFLAGS = -I. -I$(hdrdir) -I$(srcdir) #{$defs.join(" ")} #{CONFIG["CPPFLAGS"]} #{$CPPFLAGS}
|
||||
CXXFLAGS = $(CFLAGS)
|
||||
DLDFLAGS = #{$DLDFLAGS} #{$LDFLAGS}
|
||||
LDSHARED = #{CONFIG["LDSHARED"]} #{defflag}
|
||||
#{
|
||||
if /bccwin32/ =~ RUBY_PLATFORM
|
||||
"DLDFLAGS = #$LDFLAGS -L" + '"$(topdir:/=\\)"' + "\n" +
|
||||
"LDSHARED = #{CONFIG[\"LDSHARED\"]}\n"
|
||||
else
|
||||
"DLDFLAGS = #{$DLDFLAGS} #{$LDFLAGS}\n" +
|
||||
"LDSHARED = #{CONFIG[\"LDSHARED\"]} #{defflag}\n"
|
||||
end
|
||||
}
|
||||
LIBPATH = #{libpath}
|
||||
|
||||
RUBY_INSTALL_NAME = #{CONFIG["RUBY_INSTALL_NAME"]}
|
||||
|
@ -529,9 +552,17 @@ EXEEXT = #{CONFIG["EXEEXT"]}
|
|||
|
||||
all: $(DLLIB)
|
||||
|
||||
clean:; @$(RM) *.#{$OBJEXT} *.so *.sl *.a $(DLLIB)
|
||||
@$(RM) $(TARGET).lib $(TARGET).exp $(TARGET).ilk *.pdb $(CLEANFILES)
|
||||
|
||||
clean:
|
||||
@$(RM) *.#{$OBJEXT} *.so *.sl *.a $(DLLIB)
|
||||
#{
|
||||
if /bccwin32/ =~ RUBY_PLATFORM
|
||||
" @$(RM) $(TARGET).lib $(TARGET).def $(TARGET).ilc $(TARGET).ild $(TARGET).ilf $(TARGET).ils $(TARGET).tds $(TARGET).map $(CLEANFILES)\n"+
|
||||
" @if exist $(target).def.org ren $(target).def.org $(target).def"
|
||||
else
|
||||
" @$(RM) $(TARGET).lib $(TARGET).exp $(TARGET).ilk *.pdb $(CLEANFILES)"
|
||||
end
|
||||
}
|
||||
|
||||
distclean: clean
|
||||
@$(RM) Makefile extconf.h conftest.* mkmf.log
|
||||
@$(RM) core ruby$(EXEEXT) *~ $(DISTCLEANFILES)
|
||||
|
@ -560,7 +591,11 @@ EOMF
|
|||
install_files(mfile, $INSTALLFILES, SITEINSTALL_DIRS, srcprefix)
|
||||
|
||||
unless /mswin32/ =~ RUBY_PLATFORM
|
||||
src = '$<'
|
||||
if /bccwin32/ =~ RUBY_PLAT_FORM
|
||||
src = '$(<:\\=/)'
|
||||
else
|
||||
src = '$<'
|
||||
end
|
||||
copt = cxxopt = ''
|
||||
else
|
||||
if /nmake/i =~ $make
|
||||
|
@ -572,6 +607,18 @@ EOMF
|
|||
cxxopt = '-Tp'
|
||||
end
|
||||
unless /nmake/i =~ $make
|
||||
if /bccwin32/ =~ RUBY_PLATFORM
|
||||
mfile.print "
|
||||
{$(srcdir)}.cc{}.@OBJEXT@:
|
||||
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c #{cxxopt}#{src}
|
||||
{$(srcdir)}.cpp{}.@OBJEXT@:
|
||||
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c #{cxxopt}#{src}
|
||||
{$(srcdir)}.cxx{}.@OBJEXT@:
|
||||
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c #{cxxopt}#{src}
|
||||
{$(srcdir)}.c{}.@OBJEXT@:
|
||||
$(CC) $(CFLAGS) $(CPPFLAGS) -c #{copt}#{src}
|
||||
"
|
||||
end
|
||||
mfile.puts "
|
||||
.cc.#{$OBJEXT}:
|
||||
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c #{cxxopt}#{src}
|
||||
|
@ -607,14 +654,18 @@ EOMF
|
|||
|
||||
if CONFIG["DLEXT"] != $OBJEXT
|
||||
mfile.print "$(DLLIB): $(OBJS)\n"
|
||||
if /mswin32/ =~ RUBY_PLATFORM
|
||||
if /nmake/i =~ $make
|
||||
mfile.print "\tset LIB=$(LIBPATH:/=\\);$(LIB)\n"
|
||||
else
|
||||
mfile.print "\tenv LIB='$(subst /,\\\\,$(LIBPATH));$(LIB)' \\\n"
|
||||
if /bccwin32/ =~ RUBY_PLATFORM
|
||||
mfile.print "\t$(LDSHARED) $(DLDFLAGS) C0D32.OBJ $(OBJS), $@,, CW32.LIB IMPORT32.LIB WS2_32.LIB $(LIBS), #{deffile}\n"
|
||||
else
|
||||
if /mswin32|bccwin32/ =~ RUBY_PLATFORM
|
||||
if /nmake/i =~ $make
|
||||
mfile.print "\tset LIB=$(LIBPATH:/=\\);$(LIB)\n"
|
||||
else
|
||||
mfile.print "\tenv LIB='$(subst /,\\\\,$(LIBPATH));$(LIB)' \\\n"
|
||||
end
|
||||
end
|
||||
mfile.print "\t$(LDSHARED) $(DLDFLAGS) #{OUTFLAG}$(DLLIB) $(OBJS) $(LIBS) $(LOCAL_LIBS)\n"
|
||||
end
|
||||
mfile.print "\t$(LDSHARED) $(DLDFLAGS) #{OUTFLAG}$(DLLIB) $(OBJS) $(LIBS) $(LOCAL_LIBS)\n"
|
||||
elsif not File.exist?(target + ".c") and not File.exist?(target + ".cc")
|
||||
mfile.print "$(DLLIB): $(OBJS)\n"
|
||||
case RUBY_PLATFORM
|
||||
|
|
|
@ -1,3 +1,10 @@
|
|||
#ifdef __BORLANDC__
|
||||
# ifndef WIN32_DIR_H_
|
||||
# define WIN32_DIR_H_
|
||||
# include <sys/types.h>
|
||||
# endif
|
||||
#endif
|
||||
|
||||
struct direct
|
||||
{
|
||||
long d_namlen;
|
||||
|
|
|
@ -55,7 +55,9 @@ end
|
|||
f.binmode if /mingw/ =~ RUBY_PLATFORM
|
||||
|
||||
f.print <<EOF
|
||||
#ifndef __BORLANDC__
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
#{icons}
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
|
|
|
@ -45,6 +45,11 @@
|
|||
# undef WIN95
|
||||
#endif
|
||||
|
||||
#ifdef __BORLANDC__
|
||||
# define _filbuf _fgetc
|
||||
# define _flsbuf fputc
|
||||
#endif
|
||||
|
||||
#if HAVE_WSAWAITFORMULTIPLEEVENTS
|
||||
# define USE_INTERRUPT_WINSOCK
|
||||
#endif
|
||||
|
@ -1115,7 +1120,11 @@ rb_w32_opendir(const char *filename)
|
|||
//
|
||||
|
||||
if ((rb_w32_stat (filename, &sbuf) < 0 ||
|
||||
#ifdef __BORLANDC__
|
||||
(unsigned short)(sbuf.st_mode) & _S_IFDIR == 0) &&
|
||||
#else
|
||||
sbuf.st_mode & _S_IFDIR == 0) &&
|
||||
#endif
|
||||
(!ISALPHA(filename[0]) || filename[1] != ':' || filename[2] != '\0' ||
|
||||
((1 << (filename[0] & 0x5f) - 'A') & GetLogicalDrives()) == 0)) {
|
||||
return NULL;
|
||||
|
@ -1320,6 +1329,9 @@ EXTERN_C void __cdecl _unlock(int);
|
|||
#ifdef MSVCRT_THREADS
|
||||
# define MTHREAD_ONLY(x) x
|
||||
# define STHREAD_ONLY(x)
|
||||
#elif defined(__BORLANDC__)
|
||||
# define MTHREAD_ONLY(x)
|
||||
# define STHREAD_ONLY(x)
|
||||
#else
|
||||
# define MTHREAD_ONLY(x)
|
||||
# define STHREAD_ONLY(x) x
|
||||
|
@ -1339,15 +1351,16 @@ typedef struct {
|
|||
#define _CRTIMP __declspec(dllimport)
|
||||
#endif
|
||||
|
||||
#ifndef __BORLANDC__
|
||||
EXTERN_C _CRTIMP ioinfo * __pioinfo[];
|
||||
|
||||
#define IOINFO_L2E 5
|
||||
#define IOINFO_ARRAY_ELTS (1 << IOINFO_L2E)
|
||||
#define _pioinfo(i) (__pioinfo[i >> IOINFO_L2E] + (i & (IOINFO_ARRAY_ELTS - 1)))
|
||||
|
||||
#define _osfhnd(i) (_pioinfo(i)->osfhnd)
|
||||
#define _osfile(i) (_pioinfo(i)->osfile)
|
||||
#define _pipech(i) (_pioinfo(i)->pipech)
|
||||
#endif
|
||||
|
||||
#define FOPEN 0x01 /* file handle open */
|
||||
#define FNOINHERIT 0x10 /* file handle opened O_NOINHERIT */
|
||||
|
@ -1375,6 +1388,29 @@ rb_w32_open_osfhandle(long osfhandle, int flags)
|
|||
if (flags & O_NOINHERIT)
|
||||
fileflags |= FNOINHERIT;
|
||||
|
||||
#ifdef __BORLANDC__
|
||||
{
|
||||
/* attempt to allocate a C Runtime file handle */
|
||||
HANDLE hF = CreateFile("NUL", 0, 0, NULL, OPEN_ALWAYS, 0, NULL);
|
||||
fh = _open_osfhandle((long)hF, 0);
|
||||
CloseHandle(hF);
|
||||
if (fh == -1) {
|
||||
errno = EMFILE; /* too many open files */
|
||||
_doserrno = 0L; /* not an OS error */
|
||||
}
|
||||
else {
|
||||
|
||||
MTHREAD_ONLY(EnterCriticalSection(&(_pioinfo(fh)->lock)));
|
||||
/* the file is open. now, set the info in _osfhnd array */
|
||||
//_set_osfhnd(fh, osfhandle);
|
||||
|
||||
fileflags |= FOPEN; /* mark as open */
|
||||
|
||||
//_osfile(fh) = fileflags; /* set osfile entry */
|
||||
MTHREAD_ONLY(LeaveCriticalSection(&_pioinfo(fh)->lock));
|
||||
}
|
||||
}
|
||||
#else
|
||||
RUBY_CRITICAL({
|
||||
/* attempt to allocate a C Runtime file handle */
|
||||
HANDLE hF = CreateFile("NUL", 0, 0, NULL, OPEN_ALWAYS, 0, NULL);
|
||||
|
@ -1396,7 +1432,7 @@ rb_w32_open_osfhandle(long osfhandle, int flags)
|
|||
MTHREAD_ONLY(LeaveCriticalSection(&_pioinfo(fh)->lock));
|
||||
}
|
||||
});
|
||||
|
||||
#endif
|
||||
return fh; /* return handle */
|
||||
}
|
||||
|
||||
|
@ -1538,7 +1574,11 @@ setgid(int gid)
|
|||
|
||||
int
|
||||
/* ioctl(int i, unsigned int u, char *data) */
|
||||
ioctl(int i, unsigned int u, long data)
|
||||
#ifdef __BORLANDC__
|
||||
ioctl(int i, int u, ...)
|
||||
#else
|
||||
ioctl(int i, unsigned int u, long data)
|
||||
#endif
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
@ -1713,10 +1753,18 @@ StartSockets ()
|
|||
|
||||
atexit((void (*)(void)) WSACleanup);
|
||||
|
||||
#ifndef SO_SYNCHRONOUS_NONALERT
|
||||
#define SO_SYNCHRONOUS_NONALERT 0x20
|
||||
#endif
|
||||
|
||||
iSockOpt = SO_SYNCHRONOUS_NONALERT;
|
||||
/*
|
||||
* Enable the use of sockets as filehandles
|
||||
*/
|
||||
#ifndef SO_OPENTYPE
|
||||
#define SO_OPENTYPE 0x7008
|
||||
#endif
|
||||
|
||||
setsockopt(INVALID_SOCKET, SOL_SOCKET, SO_OPENTYPE,
|
||||
(char *)&iSockOpt, sizeof(iSockOpt));
|
||||
|
||||
|
@ -1955,7 +2003,11 @@ rb_w32_socket (int af, int type, int protocol)
|
|||
errno = WSAGetLastError();
|
||||
//fprintf(stderr, "socket fail (%d)", WSAGetLastError());
|
||||
}
|
||||
#ifdef __BORLANDC__
|
||||
return _open_osfhandle(s, O_RDWR|O_BINARY);
|
||||
#else
|
||||
return rb_w32_open_osfhandle(s, O_RDWR|O_BINARY);
|
||||
#endif
|
||||
}
|
||||
|
||||
#undef gethostbyaddr
|
||||
|
@ -2211,7 +2263,12 @@ rb_w32_getcwd(buffer, size)
|
|||
int length;
|
||||
char *bp;
|
||||
|
||||
#ifdef __BORLANDC__
|
||||
#undef getcwd
|
||||
if (getcwd(buffer, size) == NULL) {
|
||||
#else
|
||||
if (_getcwd(buffer, size) == NULL) {
|
||||
#endif
|
||||
return NULL;
|
||||
}
|
||||
length = strlen(buffer);
|
||||
|
@ -2671,8 +2728,8 @@ static void catch_interrupt(void)
|
|||
int rb_w32_getc(FILE* stream)
|
||||
{
|
||||
int c, trap_immediate = rb_trap_immediate;
|
||||
if (--stream->_cnt >= 0) {
|
||||
c = (unsigned char)*stream->_ptr++;
|
||||
if (--stream->FILE_COUNT >= 0) {
|
||||
c = (unsigned char)*stream->FILE_READPTR++;
|
||||
rb_trap_immediate = trap_immediate;
|
||||
}
|
||||
else {
|
||||
|
@ -2687,8 +2744,8 @@ int rb_w32_getc(FILE* stream)
|
|||
int rb_w32_putc(int c, FILE* stream)
|
||||
{
|
||||
int trap_immediate = rb_trap_immediate;
|
||||
if (--stream->_cnt >= 0) {
|
||||
c = (unsigned char)(*stream->_ptr++ = (char)c);
|
||||
if (--stream->FILE_COUNT >= 0) {
|
||||
c = (unsigned char)(*stream->FILE_READPTR++ = (char)c);
|
||||
rb_trap_immediate = trap_immediate;
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -89,28 +89,16 @@ extern "C++" {
|
|||
#define fgetchar(_stream) getchar()
|
||||
#define fputchar(_c, _stream) putchar(_c)
|
||||
|
||||
#ifndef __BORLANDC__
|
||||
|
||||
#define access _access
|
||||
#define chmod _chmod
|
||||
#define chsize _chsize
|
||||
#define close _close
|
||||
#define creat _creat
|
||||
#define dup _dup
|
||||
#define dup2 _dup2
|
||||
#define eof _eof
|
||||
#define filelength _filelength
|
||||
#define isatty _isatty
|
||||
#define locking _locking
|
||||
#define lseek _lseek
|
||||
#define mktemp _mktemp
|
||||
#define open _open
|
||||
#define perror _perror
|
||||
#define read _read
|
||||
#define setmode _setmode
|
||||
#define sopen _sopen
|
||||
#define tell _tell
|
||||
#define umask _umask
|
||||
#define unlink _unlink
|
||||
#define write _write
|
||||
#define execl _execl
|
||||
#define execle _execle
|
||||
#define execlp _execlp
|
||||
|
@ -119,8 +107,7 @@ extern "C++" {
|
|||
#define execve _execve
|
||||
#define execvp _execvp
|
||||
#define execvpe _execvpe
|
||||
#define getpid _getpid
|
||||
#define sleep(x) rb_w32_sleep((x)*1000)
|
||||
#define lseek _lseek
|
||||
#define spawnl _spawnl
|
||||
#define spawnle _spawnle
|
||||
#define spawnlp _spawnlp
|
||||
|
@ -132,13 +119,34 @@ extern "C++" {
|
|||
#if _MSC_VER < 800
|
||||
#define fileno _fileno
|
||||
#endif
|
||||
#define strcasecmp _stricmp
|
||||
#define strncasecmp _strnicmp
|
||||
#else
|
||||
#define strcasecmp stricmp
|
||||
#define strncasecmp strnicmp
|
||||
#define _open _sopen
|
||||
#endif
|
||||
|
||||
#define close _close
|
||||
#define creat _creat
|
||||
#define eof _eof
|
||||
#define filelength _filelength
|
||||
#define locking _locking
|
||||
#define mktemp _mktemp
|
||||
#define perror _perror
|
||||
#define read _read
|
||||
#define sopen _sopen
|
||||
#define tell _tell
|
||||
#define umask _umask
|
||||
#define unlink _unlink
|
||||
#define write _write
|
||||
#define getpid _getpid
|
||||
#define sleep(x) rb_w32_sleep((x)*1000)
|
||||
#define utime _utime
|
||||
#define vsnprintf _vsnprintf
|
||||
#define snprintf _snprintf
|
||||
#define popen _popen
|
||||
#define pclose _pclose
|
||||
#define strcasecmp _stricmp
|
||||
#define strncasecmp _strnicmp
|
||||
#undef stat
|
||||
#define stat(path,st) rb_w32_stat(path,st)
|
||||
/* these are defined in nt.c */
|
||||
|
@ -196,9 +204,44 @@ extern int gettimeofday(struct timeval *, struct timezone *);
|
|||
extern pid_t waitpid (pid_t, int *, int);
|
||||
extern int do_spawn(char *);
|
||||
extern int kill(int, int);
|
||||
#ifndef __BORLANDC__
|
||||
extern int isinf(double);
|
||||
extern int isnan(double);
|
||||
#else
|
||||
#include <float.h>
|
||||
#ifndef isinf
|
||||
#define isinf !_finite
|
||||
#endif
|
||||
#ifndef isnan
|
||||
#define isnan _isnan
|
||||
#endif
|
||||
|
||||
#ifdef S_ISDIR
|
||||
#undef S_ISDIR
|
||||
#endif
|
||||
|
||||
#ifdef S_ISFIFO
|
||||
#undef S_ISFIFO
|
||||
#endif
|
||||
|
||||
#ifdef S_ISBLK
|
||||
#undef S_ISBLK
|
||||
#endif
|
||||
|
||||
#ifdef S_ISCHR
|
||||
#undef S_ISCHR
|
||||
#endif
|
||||
|
||||
#ifdef S_ISREG
|
||||
#undef S_ISREG
|
||||
#endif
|
||||
|
||||
#define S_ISDIR(m) (((unsigned short)(m) & S_IFMT) == S_IFDIR)
|
||||
#define S_ISFIFO(m) (((unsigned short)(m) & S_IFMT) == S_IFIFO)
|
||||
#define S_ISBLK(m) (((unsigned short)(m) & S_IFMT) == S_IFBLK)
|
||||
#define S_ISCHR(m) (((unsigned short)(m) & S_IFMT) == S_IFCHR)
|
||||
#define S_ISREG(m) (((unsigned short)(m) & S_IFMT) == S_IFREG)
|
||||
#endif
|
||||
|
||||
//
|
||||
// define this so we can do inplace editing
|
||||
|
|
Загрузка…
Ссылка в новой задаче