summaryrefslogtreecommitdiff
path: root/win32
diff options
context:
space:
mode:
Diffstat (limited to 'win32')
-rw-r--r--win32/Makefile.sub43
-rw-r--r--win32/README.win328
-rwxr-xr-xwin32/configure.bat45
-rw-r--r--win32/setup.mak59
4 files changed, 96 insertions, 59 deletions
diff --git a/win32/Makefile.sub b/win32/Makefile.sub
index d48d4bd01a..5a89f8f148 100644
--- a/win32/Makefile.sub
+++ b/win32/Makefile.sub
@@ -15,9 +15,6 @@ RUBYW_INSTALL_NAME = $(RUBY_INSTALL_NAME:ruby=rubyw)
!if "$(RUBYW_INSTALL_NAME)" == "$(RUBY_INSTALL_NAME)"
RUBYW_INSTALL_NAME = $(RUBY_INSTALL_NAME)w
!endif
-!ifndef RUBY_SO_NAME
-RUBY_SO_NAME = rubymw
-!endif
!if !defined(icondirs) && defined(ICONDIRS)
icondirs=$(ICONDIRS)
!endif
@@ -36,10 +33,15 @@ CC = cl
!if !defined(YACC)
YACC = byacc
!endif
+AR = lib -nologo
PURIFY =
AUTOCONF = autoconf
-!if !defined(PROCESSOR_ARCHITECTURE) || "$(PROCESSOR_ARCHITECTURE)" == "x86"
+!if !defined(PROCESSOR_ARCHITECTURE)
+PROCESSOR_ARCHITECTURE = x86
+!endif
+MACHINE = $(PROCESSOR_ARCHITECTURE)
+!if "$(PROCESSOR_ARCHITECTURE)" == "x86"
!if !defined(PROCESSOR_LEVEL)
PROCESSOR_LEVEL = 5
!endif
@@ -62,6 +64,10 @@ OPTFLAGS = -O2b2xg-
OS = mswin32
RT = msvcrt
+!ifndef RUBY_SO_NAME
+RUBY_SO_NAME = $(RT)-$(RUBY_INSTALL_NAME)17
+!endif
+
!if !defined(prefix)
prefix = /usr
!endif
@@ -155,7 +161,6 @@ OBJS = array.obj \
all: miniruby$(EXEEXT) rbconfig.rb \
$(LIBRUBY) $(MISCLIBS)
- set LIB=..\..;$(ORGLIBPATH)
@.\miniruby$(EXEEXT) $(srcdir)/ext/extmk.rb
ruby: $(PROGRAM)
@@ -301,7 +306,7 @@ s,@CC@,$(CC),;t t
s,@CPP@,$$(CC) -E,;t t
s,@YACC@,$(YACC),;t t
s,@RANLIB@,rem,;t t
-s,@AR@,lib -nologo,;t t
+s,@AR@,$(AR),;t t
s,@LN_S@,$(LN_S),;t t
s,@SET_MAKE@,$(SET_MAKE),;t t
s,@LIBOBJS@, acosh.obj crypt.obj win32.obj isinf.obj isnan.obj,;t t
@@ -337,22 +342,15 @@ s,@sitearch@,$(ARCH)-$(RT),;t t
s,@sitedir@,$${prefix}/lib/ruby/site_ruby,;t t
s,@configure_args@,--with-make-prog=nmake --enable-shared $(configure_args),;t t
s,@configure_input@,$$configure_input,;t t
+ @if not exist $(@D)\nul mkdir $(@D)
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)
+miniruby$(EXEEXT): $(OBJS) $(MAINOBJ) dmyext.obj
@echo $(EXTOBJS)
@echo $(LIBS)
- $(PURIFY) $(CC) $(LDFLAGS) $(MAINOBJ) $(EXTOBJS) $(OBJS) $(LIBS) -Fe$@
+ $(PURIFY) $(CC) $(LDFLAGS) $(MAINOBJ) dmyext.obj $(OBJS) $(LIBS) -Fe$@
$(PROGRAM): $(MAINOBJ) $(LIBRUBY_SO) $*.res
$(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINOBJ) $*.res \
@@ -363,21 +361,15 @@ $(WPROGRAM): $(MAINOBJ) $(WINMAINOBJ) $(LIBRUBY_SO) $*.res
-Fe$@ $(LIBRUBYARG) -link -stack:$(STACK) -subsystem:Windows -incremental:no
$(LIBRUBY_A): $(OBJS) dmyext.obj
- lib -nologo /OUT:$@ $(OBJS) dmyext.obj
+ $(AR) -out:$@ -machine:$(MACHINE) $(OBJS) dmyext.obj
$(LIBRUBY): $(RUBYDEF)
- lib -nologo /OUT:$@ /DEF:$(RUBYDEF)
+ $(AR) -out:$@ -def:$(RUBYDEF) -machine:$(MACHINE)
$(LIBRUBY_SO): $(LIBRUBY_A) $(EXTOBJS) $(RUBYDEF) $@.res
- set LIB=.\win32;$(ORGLIBPATH)
$(CC) $(LDFLAGS) $(MAINOBJ) $(EXTOBJS) $(LIBRUBY_A) $@.res $(LIBS) \
-Fe$@ -link -dll -def:$(RUBYDEF)
-!if "$(LIBRUBY_SO)" != "rubymw.dll"
-rubymw.dll: $(LIBRUBY)
- $(CC) -nologo $(EXTOBJS) $(LIBRUBY) -o $@ -link /DLL /DEF:$(RUBYDEF)
-!endif
-
$(RUBYDEF): $(LIBRUBY_A) miniruby$(EXEEXT)
.\miniruby$(EXEEXT) $(srcdir)/win32/mkexports.rb -output=$@ $(LIBRUBY_A)
@@ -452,9 +444,6 @@ $(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(LIBRUBY_SO).rc: rbconfig.rb
-so_name=$(LIBRUBY_SO) \
. $(icondirs) $(srcdir)/win32
-#config.status: $(srcdir)/configure
-# $(SHELL) ./config.status --recheck
-
{$(srcdir)/missing}.c.obj:
$(CC) $(CFLAGS) -I. -I$(<D) $(CPPFLAGS) -c -Tc$(<:\=/)
{$(srcdir)/win32}.c.obj:
diff --git a/win32/README.win32 b/win32/README.win32
index cafcedff71..e7d589759c 100644
--- a/win32/README.win32
+++ b/win32/README.win32
@@ -4,11 +4,11 @@
== Requirement
-(1) Visual C++ 4.0 or later.
+(1) Visual C++ 5.0 or later.
(2) If you want to run `((%nmake clean%))' or `((%nmake distclean%))'
properly, you must install UNIX compatible `((%rm%))' command on
- your ((|PATH|)).
+ your ((|PATH|)) if you want to clean after compile.
(3) Please set environment variable (({INCLUDE})), (({LIB})), (({PATH}))
to run required commands properly from the command line.
@@ -22,6 +22,8 @@
== How to compile and install
(1) Execute win32\configure.bat on your build directory.
+ You can specify the target platform as an argument.
+ For example, run `((%configure i686-mswin32%))'
(2) Change ((|RUBY_INSTALL_NAME|)) and ((|RUBY_SO_NAME|)) in (({Makefile}))
if you want to change the name of the executable files.
@@ -47,7 +49,7 @@
* <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 `(({i386-mswin32}))'.
+ The default ((|<PLATFORM>|)) is `(({i386-mswin32}))'.
== Icons
diff --git a/win32/configure.bat b/win32/configure.bat
index e35a4c312c..a0398774d7 100755
--- a/win32/configure.bat
+++ b/win32/configure.bat
@@ -1,13 +1,32 @@
-@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:\=/): nul
-echo>> ~tmp~.mak @del ~tmp~.mak
-echo>> ~tmp~.mak @-$(MAKE) -l$(MAKEFLAGS) -f $(@D)/setup.mak \
-if not "%1" == "" echo>> ~tmp~.mak srcdir="%1" \
-echo>> ~tmp~.mak WIN32DIR=$(@D)
-nmake -alf ~tmp~.mak
+@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:\=/): nul
+echo>> ~tmp~.mak @del ~tmp~.mak
+echo>> ~tmp~.mak @-$(MAKE) -l$(MAKEFLAGS) -f $(@D)/setup.mak \
+:loop
+if "%1" == "" goto :end
+if "%1" == "--srcdir" goto :srcdir
+if "%1" == "srcdir" goto :srcdir
+if "%1" == "--target" goto :target
+if "%1" == "target" goto :target
+ echo>> ~tmp~.mak "%1" \
+ shift
+goto :loop
+:srcdir
+ echo>> ~tmp~.mak "srcdir=%2" \
+ shift
+ shift
+goto :loop
+:target
+ echo>> ~tmp~.mak "%2" \
+ shift
+ shift
+goto :loop
+:end
+echo>> ~tmp~.mak WIN32DIR=$(@D)
+nmake -alf ~tmp~.mak
diff --git a/win32/setup.mak b/win32/setup.mak
index d5694c5f6c..88c5822a37 100644
--- a/win32/setup.mak
+++ b/win32/setup.mak
@@ -9,23 +9,50 @@ srcdir = $(WIN32DIR)/..
!ENDIF
OS = mswin32
RT = msvcrt
+INCLUDE = !include
+MAKEFILE = $(WIN32DIR)/setup.mak
-all: ext
+!if "$(target)" == ""
all: Makefile
-all:; @echo type `nmake' to make ruby for mswin32.
+ @echo type `$(MAKE)' to make ruby for $(OS).
+!else
+all: $(target)
+!endif
-Makefile:
- @echo ### makefile for ruby $(OS) ###> $@
- @echo srcdir = $(srcdir:\=/)>> $@
- @echo RUBY_INSTALL_NAME = ruby>> $@
- @echo RUBY_SO_NAME = $(RT)-$$(RUBY_INSTALL_NAME)17>> $@
- @echo prefix = /usr>> $@
- @echo CFLAGS = -nologo -MD -DNT=1 $$(DEBUGFLAGS) $$(OPTFLAGS) $$(PROCESSOR_FLAG)>> $@
- @echo CPPFLAGS = -I. -I$$(srcdir) -I$$(srcdir)/missing -DLIBRUBY_SO=\"$$(LIBRUBY_SO)\">> $@
- @echo LDFLAGS = $$(CFLAGS) -Fm>> $@
- @echo XLDFLAGS = >> $@
- @echo RFLAGS = -r>> $@
- @echo EXTLIBS =>> $@
- @echo !INCLUDE $$(srcdir)/win32/Makefile.sub>> $@
+i386-$(OS):
+ @$(MAKE) -$(MAKEFLAGS) -f $(MAKEFILE) target= \
+ PROCESSOR_ARCHITECTURE=x86 PROCESSOR_LEVEL=3
+i486-$(OS):
+ @$(MAKE) -$(MAKEFLAGS) -f $(MAKEFILE) target= \
+ PROCESSOR_ARCHITECTURE=x86 PROCESSOR_LEVEL=4
+i586-$(OS):
+ @$(MAKE) -$(MAKEFLAGS) -f $(MAKEFILE) target= \
+ PROCESSOR_ARCHITECTURE=x86 PROCESSOR_LEVEL=5
+i686-$(OS):
+ @$(MAKE) -$(MAKEFLAGS) -f $(MAKEFILE) target= \
+ PROCESSOR_ARCHITECTURE=x86 PROCESSOR_LEVEL=6
+alpha-$(OS):
+ @$(MAKE) -$(MAKEFLAGS) -f $(MAKEFILE) target= \
+ PROCESSOR_ARCHITECTURE=alpha PROCESSOR_LEVEL=
-ext:; @if not exist $@\* mkdir $@
+Makefile:
+ @echo Creating <<$@
+### Makefile for ruby $(OS) ###
+srcdir = $(srcdir:\=/)
+!if defined(PROCESSOR_ARCHITECTURE)
+PROCESSOR_ARCHITECTURE = $(PROCESSOR_ARCHITECTURE)
+!endif
+!if defined(PROCESSOR_LEVEL)
+PROCESSOR_LEVEL = $(PROCESSOR_LEVEL)
+!endif
+RUBY_INSTALL_NAME = ruby
+RUBY_SO_NAME = $(RT)-$$(RUBY_INSTALL_NAME)17
+prefix = /usr
+CFLAGS = -nologo -MD -DNT=1 $$(DEBUGFLAGS) $$(OPTFLAGS) $$(PROCESSOR_FLAG)
+CPPFLAGS = -I. -I$$(srcdir) -I$$(srcdir)/missing -DLIBRUBY_SO=\"$$(LIBRUBY_SO)\"
+LDFLAGS = $$(CFLAGS) -Fm
+XLDFLAGS =
+RFLAGS = -r
+EXTLIBS =
+$(INCLUDE) $$(srcdir)/win32/Makefile.sub
+<<KEEP