diff --git a/ChangeLog b/ChangeLog index 4b33bc3a7f..a372eb6b22 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,8 +1,16 @@ -Sat Jul 21 17:07:35 2007 Nobuyoshi Nakada +Sat Jul 21 17:32:31 2007 Nobuyoshi Nakada * lib/mkmf.rb (create_makefile): make OBJS depend on RUBY_EXTCONF_H only if extconf.h is created. + * bcc32/{Makefile.sub,configure.bat,setup.mak: configure_args + support. + + * bcc32/setup.mak: check runtime version. + + * win32/win32.c (rb_w32_open_osfhandle): prototype has changed + in bcc 5.82. + * {win32,wince,bcc32}/setup.mak (-version-): no RUBY_EXTERN magic. * win32/resource.rb: include patchlevel number. diff --git a/bcc32/Makefile.sub b/bcc32/Makefile.sub index 67e9e58852..567050972c 100644 --- a/bcc32/Makefile.sub +++ b/bcc32/Makefile.sub @@ -4,8 +4,12 @@ SHELL = $(COMSPEC) MKFILES = Makefile #### Start of system configuration section. #### +!ifndef OS OS = bccwin32 -RT = $(OS) +!endif +!if !defined(RT) +!error RT not defined. Retry from configure pass. +!endif ## variables may be overridden by $(compile_dir)/Makefile !ifndef srcdir @@ -144,7 +148,7 @@ STACK = 0x2000000 XCFLAGS = -DRUBY_EXPORT -I. -I$(srcdir) -I$(srcdir)/missing -ARFLAGS = /a +ARFLAGS = /a /p32 LD = ilink32 -q -Gn LDSHARED = $(LD) XLDFLAGS = -Tpe c0x32.obj @@ -209,7 +213,13 @@ rubyw: $(WPROGRAM) !include $(srcdir)/common.mk -PHONY: Makefile +$(MKFILES): $(srcdir)/bcc32/Makefile.sub $(srcdir)/bcc32/configure.bat $(srcdir)/bcc32/setup.mak + $(COMSPEC) /C $(srcdir:/=\)\bcc32\configure.bat $(configure_args) + @echo $(MKFILES) should be updated, re-run $(MAKE). + @$(MAKE) > nul -q -f &&| +PHONY: nul + @exit +| CONFIG_H = ./.config.h.time diff --git a/bcc32/configure.bat b/bcc32/configure.bat index 6e32df6fc7..8cdfc64b03 100755 --- a/bcc32/configure.bat +++ b/bcc32/configure.bat @@ -6,76 +6,120 @@ echo> ~tmp~.mak #### echo>> ~tmp~.mak conf = %0 echo>> ~tmp~.mak $(conf:\=/): nul -echo>> ~tmp~.mak @del ~tmp~.mak +echo>> ~tmp~.mak @del ~setup~.mak echo>> ~tmp~.mak @-$(MAKE) -l$(MAKEFLAGS) -f $(@D)setup.mak \ +if exist pathlist.tmp del pathlist.tmp +if exist confargs.mk del confargs.mk :loop if "%1" == "" goto :end if "%1" == "--prefix" goto :prefix +if "%1" == "prefix" goto :prefix if "%1" == "--srcdir" goto :srcdir if "%1" == "srcdir" goto :srcdir if "%1" == "--target" goto :target if "%1" == "target" goto :target if "%1" == "--with-static-linked-ext" goto :extstatic if "%1" == "--program-suffix" goto :suffix -if "%1" == "--program-name" goto :progname +if "%1" == "RUBY_SUFFIX" goto :suffix +if "%1" == "--program-name" goto :installname +if "%1" == "--install-name" goto :installname +if "%1" == "RUBY_INSTALL_NAME" goto :installname +if "%1" == "--so-name" goto :soname +if "%1" == "RUBY_SO_NAME" goto :soname if "%1" == "--enable-install-doc" goto :enable-rdoc if "%1" == "--disable-install-doc" goto :disable-rdoc if "%1" == "--extout" goto :extout +if "%1" == "EXTOUT" goto :extout if "%1" == "--with-baseruby" goto :baseruby +if "%1" == "BASERUBY" goto :baseruby +if "%1" == "--path" goto :path if "%1" == "-h" goto :help if "%1" == "--help" goto :help - echo>> ~tmp~.mak "%1" \ + echo>>confargs.tmp %1 \ shift goto :loop :srcdir - echo>> ~tmp~.mak -D"srcdir=%2" \ + echo>> ~tmp~.mak -Dsrcdir=%2 \ + echo>>confargs.tmp --srcdir=%2 \ shift shift goto :loop :prefix - echo>> ~tmp~.mak -D"prefix=%2" \ + echo>> ~tmp~.mak -Dprefix=%2 \ + echo>>confargs.tmp %1=%2 \ shift shift goto :loop :suffix - echo>> ~tmp~.mak -D"RUBY_SUFFIX=%2" \ + echo>>confargs.mk !ifndef RUBY_SUFFIX + echo>>confargs.mk RUBY_SUFFIX = %2 + echo>>confargs.mk !endif + echo>>confargs.tmp %1=%2 \ shift shift goto :loop :installname - echo>> ~tmp~.mak -D"RUBY_INSTALL_NAME=%2" \ + echo>>confargs.mk !ifndef RUBY_INSTALL_NAME + echo>>confargs.mk RUBY_INSTALL_NAME = %2 + echo>>confargs.mk !endif + echo>>confargs.tmp %1=%2 \ shift shift goto :loop :soname - echo>> ~tmp~.mak -D"RUBY_SO_NAME=%2" \ + echo>>confargs.mk !ifndef RUBY_SO_NAME + echo>>confargs.mk RUBY_SO_NAME = %2 + echo>>confargs.mk !endif + echo>>confargs.tmp %1=%2 \ shift shift goto :loop :target - echo>> ~tmp~.mak "%2" \ + echo>> ~tmp~.mak %2 \ + echo>>confargs.tmp --target=%2 \ shift shift goto :loop :extstatic - echo>> ~tmp~.mak -D"EXTSTATIC=static" \ + echo>>confargs.mk !ifndef EXTSTATIC + echo>>confargs.mk EXTSTATIC = static + echo>>confargs.mk !endif + echo>>confargs.tmp %1 \ shift goto :loop :enable-rdoc - echo>> ~tmp~.mak -D"RDOCTARGET=install-doc" \ + echo>>confargs.mk !ifndef RDOCTARGET + echo>>confargs.mk RDOCTARGET = install-doc + echo>>confargs.mk !endif + echo>>confargs.tmp %1 \ shift goto :loop :disable-rdoc - echo>> ~tmp~.mak -D"RDOCTARGET=install-nodoc" \ + echo>>confargs.mk !ifndef RDOCTARGET + echo>>confargs.mk RDOCTARGET = install-nodoc + echo>>confargs.mk !endif + echo>>confargs.tmp %1 \ shift goto :loop :extout - echo>> ~tmp~.mak -D"EXTOUT=%2" \ + echo>>confargs.mk !ifndef EXTOUT + echo>>confargs.mk EXTOUT = %2 + echo>>confargs.mk !endif + echo>>confargs.tmp %1=%2 \ shift shift goto :loop :baseruby - echo>> ~tmp~.mak -D"BASERUBY=%2" \ + echo>>confargs.mk !ifndef BASERUBY + echo>>confargs.mk BASERUBY = %2 + echo>>confargs.mk !endif + echo>>confargs.tmp %1=%2 \ + shift + shift +goto :loop +:path + echo>>pathlist.tmp %2;\ + echo>>confargs.tmp %1=%2 \ shift shift goto :loop @@ -84,16 +128,36 @@ goto :loop echo --help display this help echo --srcdir=DIR find the sources in DIR [configure dir or `..'] echo Installation directories: - echo --prefix=PREFIX install files in PREFIX [/usr] + echo --prefix=PREFIX install files in PREFIX (ignored currently) echo System types: echo --target=TARGET configure for TARGET [i386-bccwin32] echo Optional Package: echo --with-baseruby=RUBY use RUBY as baseruby [ruby] echo --with-static-linked-ext link external modules statically - echo --disable-install-doc do not install rdoc indexes during install + echo --enable-install-doc install rdoc indexes during install + del *.tmp del ~tmp~.mak goto :exit :end -echo>> ~tmp~.mak -Dbcc32dir="$(@D)" -make -s -f ~tmp~.mak +echo>> ~tmp~.mak -Dbcc32dir=$(@D) +if not exist confargs.tmp goto :noconfargs + echo>>confargs.mk configure_args = \ + type>>confargs.mk confargs.tmp + echo.>>confargs.mk + echo>>confargs.mk #### +:noconfargs +if not exist pathlist.tmp goto :nopathlist + echo>>confargs.mk pathlist = \ + type>>confargs.mk pathlist.tmp + echo.>>confargs.mk + echo>>confargs.mk #### + echo>>confargs.mk PATH = $(pathlist:;=/bin;)$(PATH) + echo>>confargs.mk INCLUDE = $(pathlist:;=/include;) + echo>>confargs.mk LIB = $(pathlist:;=/lib;) +:nopathlist +if exist confargs.mk copy confargs.mk ~setup~.mak > nul +type>>~setup~.mak ~tmp~.mak +del *.tmp > nul +del ~tmp~.mak > nul +make -s -f ~setup~.mak :exit diff --git a/bcc32/setup.mak b/bcc32/setup.mak index 9af0ac2d7a..483292ed51 100644 --- a/bcc32/setup.mak +++ b/bcc32/setup.mak @@ -9,7 +9,7 @@ srcdir = $(bcc32dir:/bcc32/=) !else srcdir = $(bcc32dir)/.. !endif -!if "$(prefix)" == "" +!ifndef prefix prefix = /usr !endif OS = bccwin32 @@ -30,7 +30,9 @@ i586-$(OS): -prologue- -i586- -epilogue- i686-$(OS): -prologue- -i686- -epilogue- alpha-$(OS): -prologue- -alpha- -epilogue- --prologue-: nul +-prologue-: -basic-vars- -version- -system-vars- + +-basic-vars-: nul @echo Creating $(MAKEFILE) @type > $(MAKEFILE) &&| \#\#\# Makefile for ruby $(OS) \#\#\# @@ -40,41 +42,68 @@ $(BANG)endif $(BANG)ifndef prefix prefix = $(prefix:\=/) $(BANG)endif -$(BANG)ifndef EXTSTATIC -EXTSTATIC = $(EXTSTATIC) -$(BANG)endif -!if defined(RDOCTARGET) -$(BANG)ifndef RDOCTARGET -RDOCTARGET = $(RDOCTARGET) -$(BANG)endif -!endif -!if defined(EXTOUT) -$(BANG)ifndef EXTOUT -EXTOUT = $(EXTOUT) -$(BANG)endif -!endif -!if defined(BASERUBY) -$(BANG)ifndef BASERUBY -BASERUBY = $(BASERUBY) -$(BANG)endif -!endif | - @type > usebormm.bat &&| -@echo off -ilink32 -Gn -x usebormm.lib > nul -if exist usebormm.tds echo MEMLIB = usebormm.lib -| - @usebormm.bat >> $(MAKEFILE) - @del usebormm.* +!if exist(confargs.mk) + @type confargs.mk >> $(MAKEFILE) + @del confargs.mk +!endif +-system-vars-: -runtime- -bormm- + +-bormm-: nul + @-ilink32 -q -Gn -x usebormm.lib > nul + @-if exist usebormm.tds $(APPEND) MEMLIB = usebormm.lib + @if exist usebormm.* del usebormm.* + +-osname-: nul + @echo OS = >>$(MAKEFILE) + +-runtime-: nul + type > conftest.c &&| +\#include +int main(){printf("");return 0;} +| + bcc32 conftest.c cw32i.lib > nul + tdump conftest.exe < nul > conftest.i + grep "^Imports from CC" conftest.i > conftest.c + cpp32 -P- -DFile=\# -DImports=RTNAME -Dfrom== conftest.c > nul + $(MAKE) > nul -DBANG=$(BANG) -f &&| +-runtime-: nul +$(BANG)include conftest.i +RT = $$(RTNAME:.DLL=) +OS = $$(RT:CC32=) +-runtime-: + del conftest.* +$(BANG)if "$$(OS)" == "50" + echo OS = bccwin32 >> $(MAKEFILE) +$(BANG)else + echo OS = bccwin32_$$(OS) >> $(MAKEFILE) +$(BANG)endif +| + @echo RT = $$(OS) >> $(MAKEFILE) + +-version-: nul @cpp32 -I$(srcdir) -P- -o$(MAKEFILE) > nul &&| \#include "version.h" MAJOR = RUBY_VERSION_MAJOR MINOR = RUBY_VERSION_MINOR TEENY = RUBY_VERSION_TEENY + +BORLANDC = __BORLANDC__ | - @type $(MAKEFILE).i >> $(MAKEFILE) + @$(MAKE) > nul -DBANG=$(BANG) -f &&, +-version-: nul +$(BANG)include $(MAKEFILE) +$(BANG)include $(MAKEFILE).i +-version-: @del $(MAKEFILE).i + @type >> $(MAKEFILE) &&| +MAJOR = $$(MAJOR) +MINOR = $$(MINOR) +TEENY = $$(TEENY) +BORLANDC = $$(BORLANDC) +| +, -generic-: nul !if defined(PROCESSOR_ARCHITECTURE) || defined(PROCESSOR_LEVEL) @@ -89,7 +118,6 @@ $(BANG)ifndef PROCESSOR_LEVEL PROCESSOR_LEVEL = $(PROCESSOR_LEVEL) $(BANG)endif !endif - | !endif @@ -122,8 +150,6 @@ $(BANG)endif -epilogue-: nul @type >> $(MAKEFILE) &&| -\# OS = $(OS) -\# RT = $(RT) \# RUBY_INSTALL_NAME = ruby \# RUBY_SO_NAME = $$(RT)-$$(RUBY_INSTALL_NAME)$$(MAJOR)$$(MINOR) \# CFLAGS = -q $$(DEBUGFLAGS) $$(OPTFLAGS) $$(PROCESSOR_FLAG) -w- -wsus -wcpt -wdup -wext -wrng -wrpt -wzdi @@ -134,5 +160,4 @@ $(BANG)endif \# EXTLIBS = cw32.lib import32.lib user32.lib kernel32.lib $(BANG)include $$(srcdir)/bcc32/Makefile.sub | - @$(srcdir:/=\)\win32\rm.bat config.h config.status @echo type "`$(MAKE)'" to make ruby for $(OS). diff --git a/win32/win32.c b/win32/win32.c index 90aac79508..a52e9ce54d 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -1771,7 +1771,7 @@ init_stdhandle(void) #ifdef __BORLANDC__ static int -rb_w32_open_osfhandle(long osfhandle, int flags) +rb_w32_open_osfhandle(intptr_t osfhandle, int flags) { int fd = _open_osfhandle(osfhandle, flags); if (fd == -1) {