summaryrefslogtreecommitdiff
path: root/win32
diff options
context:
space:
mode:
Diffstat (limited to 'win32')
-rw-r--r--win32/Makefile.sub113
-rw-r--r--win32/setup.mak108
2 files changed, 138 insertions, 83 deletions
diff --git a/win32/Makefile.sub b/win32/Makefile.sub
index fc0c9c4c65..653aad32a8 100644
--- a/win32/Makefile.sub
+++ b/win32/Makefile.sub
@@ -25,11 +25,14 @@ iconinc=-I$(icondirs: = -I)
###############
VPATH = $(srcdir):$(srcdir)/missing
-.SUFFIXES: .y
+.SUFFIXES: .y .def .lib
!if !defined(CC)
CC = cl
!endif
+!if !defined(CPP)
+CPP = $(CC) -E
+!endif
!if !defined(YACC)
YACC = byacc
!endif
@@ -75,14 +78,11 @@ prefix = /usr
DESTDIR = $(prefix)
!endif
!if !defined(CFLAGS)
-CFLAGS = -nologo -MD -DNT=1 $(DEBUGFLAGS) $(OPTFLAGS) $(PROCESSOR_FLAG)
+CFLAGS = -MD -DNT=1 $(DEBUGFLAGS) $(OPTFLAGS) $(PROCESSOR_FLAG)
!endif
!if !defined(CPPFLAGS)
CPPFLAGS = -I. -I$(srcdir) -I$(srcdir)/missing -DLIBRUBY_SO=\"$(LIBRUBY_SO)\"
!endif
-!if !defined(LDFLAGS)
-LDFLAGS = $(CFLAGS) -Fm
-!endif
!if !defined(XLDFLAGS)
XLDFLAGS =
!endif
@@ -94,15 +94,25 @@ EXTLIBS =
!endif
LIBS = user32.lib advapi32.lib wsock32.lib $(EXTLIBS)
MISSING = acosh.obj crypt.obj win32.obj isinf.obj isnan.obj
-LDSHARED = $(CC) -LD
-DLDFLAGS =
+
+ARFLAGS = -machine:$(MACHINE) -out:
+CC = $(CC) -nologo
+LD = $(CC)
+LDSHARED = $(LD) -LD
+XCFLAGS =
+LDFLAGS = -link -incremental:no -pdb:none
+DLDFLAGS = $(LDFLAGS) -dll
+XLDFLAGS = -stack:$(STACK)
SOLIBS =
+LIBRUBY_LDSHARED = $(LDSHARED)
+LIBRUBY_DLDFLAGS = $(EXTLDFLAGS) -def:$(RUBYDEF)
+
EXEEXT = .exe
PROGRAM=$(RUBY_INSTALL_NAME)$(EXEEXT)
WPROGRAM=$(RUBYW_INSTALL_NAME)$(EXEEXT)
RUBYDEF = $(RUBY_SO_NAME).def
-MINIRUBY=miniruby$(EXEEXT)
+MINIRUBY = .\miniruby$(EXEEXT)
!if !defined(STACK)
STACK = 0x2000000
@@ -116,7 +126,7 @@ LIBRUBY_SO = $(RUBY_SO_NAME).dll
LIBRUBY = $(RUBY_SO_NAME).lib
LIBRUBYARG = $(LIBRUBY)
-EXTOBJS = dmyext.obj
+EXTOBJS =
MAINOBJ = main.obj
WINMAINOBJ = winmain.obj
@@ -161,7 +171,7 @@ OBJS = array.obj \
all: ext miniruby$(EXEEXT) rbconfig.rb \
$(LIBRUBY) $(MISCLIBS)
- @.\miniruby$(EXEEXT) $(srcdir)/ext/extmk.rb
+ @$(MINIRUBY) $(srcdir)/ext/extmk.rb $(EXTSTATIC) $(MAKE) -$(MFLAGS)$(MAKEFLAGS)
ext:
@mkdir $@
@@ -264,17 +274,16 @@ config.h: Makefile $(srcdir)/win32/Makefile.sub
#define RUBY_SITE_ARCHLIB "/lib/ruby/site_ruby/1.7/$(ARCH)-$(RT)"
<<KEEP
-config.status: Makefile $(srcdir)/win32/Makefile.sub $(MINIRUBY)
- @echo Creating config.status
- @$(MINIRUBY) -pe "~/@CFLAGS@/||$$_.sub!(/#{Regexp.quote('$(CFLAGS)')}/o, '$$(CFLAGS)')" << > $@
+config.status: Makefile $(srcdir)/win32/Makefile.sub
+ @echo Creating <<$@
# 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@,user32.lib advapi32.lib wsock32.lib,;t t
+s,@LDFLAGS@,,;t t
+s,@LIBS@,$(LIBS),;t t
s,@exec_prefix@,$${prefix},;t t
s,@prefix@,,;t t
s,@program_transform_name@,s,,,,;t t
@@ -306,10 +315,11 @@ 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@,$$(CC) -E,;t t
+s,@CPP@,$(CPP),;t t
s,@YACC@,$(YACC),;t t
s,@RANLIB@,rem,;t t
s,@AR@,$(AR),;t t
+s,@ARFLAGS@,$(ARFLAGS):,;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
@@ -318,12 +328,13 @@ 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,@DLDFLAGS@,$(DLDFLAGS) $$(LIBPATH) -def:$$(DEFFILE),;t t
s,@STATIC@,$(STATIC),;t t
s,@CCDLFLAGS@,-DIMPORT,;t t
-s,@LDSHARED@,$$(CC) -LD,;t t
+s,@LDSHARED@,$(LDSHARED),;t t
s,@DLEXT@,so,;t t
s,@DLEXT2@,dll,;t t
+s,@LIBEXT@,lib,;t t
s,@STRIP@,$(STRIP),;t t
s,@EXTSTATIC@,$(EXTSTATIC),;t t
s,@setup@,Setup,;t t
@@ -331,6 +342,8 @@ s,@MINIRUBY@,$(MINIRUBY),;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,@rubyw_install_name@,$(RUBYW_INSTALL_NAME),;t t
+s,@RUBYW_INSTALL_NAME@,$(RUBYW_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
@@ -342,6 +355,17 @@ s,@DLDLIBS@,$(DLDLIBS),;t t
s,@ENABLE_SHARED@,yes,;t t
s,@OUTFLAG@,-Fe,;t t
s,@CPPOUTFILE@,-P,;t t
+s,@LIBPATHFLAG@, -libpath:%s,;t t
+s,@LIBARG@,%s.lib,;t t
+s,@LINK_SO@,$$(LDSHARED) -Fe$$(@) $$(OBJS) $$(LIBS) $$(LOCAL_LIBS) $$(DLDFLAGS),;t t
+s,@COMPILE_C@,$$(CC) $$(CFLAGS) $$(CPPFLAGS) -c -Tc$$(<:\=/),;t t
+s,@COMPILE_CXX@,$$(CXX) $$(CXXFLAGS) $$(CPPFLAGS) -c -Tp$$(<:\=/),;t t
+s,@COMPILE_RULES@,{$$(srcdir)}.%s{}.%s: .%s.%s:,;t t
+s,@TRY_LINK@,$$(CC) -Feconftest $$(INCFLAGS) -I$$(hdrdir) $$(CPPFLAGS) $$(CFLAGS) $$(src) $$(LOCAL_LIBS) $$(LIBS) $$(LDFLAGS) $$(XLDFLAGS),;t t
+s,@COMMON_LIBS@,m,;t t
+s,@COMMON_MACROS@,WIN32_LEAN_AND_MEAN;t t
+s,@COMMON_HEADERS@,winsock2.h windows.h,;t t
+s,@EXPORT_PREFIX@, ,;t t
s,@arch@,$(ARCH)-$(OS),;t t
s,@sitearch@,$(ARCH)-$(RT),;t t
s,@sitedir@,$${prefix}/lib/ruby/site_ruby,;t t
@@ -349,36 +373,40 @@ s,@configure_args@,--with-make-prog=nmake --enable-shared $(configure_args),;t t
s,@configure_input@,$$configure_input,;t t
s,@srcdir@,$(srcdir),;t t
s,@top_srcdir@,$(srcdir),;t t
-<<
+<<KEEP
miniruby$(EXEEXT): $(OBJS) $(MAINOBJ) dmyext.obj
- @echo $(EXTOBJS)
- @echo $(LIBS)
- $(PURIFY) $(CC) $(LDFLAGS) $(MAINOBJ) dmyext.obj $(OBJS) $(LIBS) -Fe$@
+ @echo. $(LIBS)
+ $(PURIFY) $(CC) $(MAINOBJ) dmyext.obj $(OBJS) $(LIBS) -Fe$@ $(LDFLAGS)
$(PROGRAM): $(MAINOBJ) $(LIBRUBY_SO) $*.res
- $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINOBJ) $*.res \
- -Fe$@ $(LIBRUBYARG) -link -stack:$(STACK) -incremental:no
+ $(PURIFY) $(CC) $(MAINOBJ) $*.res \
+ -Fe$@ $(LIBRUBYARG) $(LDFLAGS) $(XLDFLAGS)
$(WPROGRAM): $(MAINOBJ) $(WINMAINOBJ) $(LIBRUBY_SO) $*.res
- $(PURIFY) $(CC) $(LDFLAGS) $(MAINOBJ) $(WINMAINOBJ) $*.res \
- -Fe$@ $(LIBRUBYARG) -link -stack:$(STACK) -subsystem:Windows -incremental:no
+ $(PURIFY) $(CC) $(MAINOBJ) $(WINMAINOBJ) $*.res \
+ -Fe$@ $(LIBRUBYARG) $(LDFLAGS) $(XLDFLAGS) -subsystem:Windows
$(LIBRUBY_A): $(OBJS) dmyext.obj
- $(AR) -out:$@ -machine:$(MACHINE) $(OBJS) dmyext.obj
+ $(AR) $(ARFLAGS)$@ $(OBJS) dmyext.obj
$(LIBRUBY): $(RUBYDEF)
- $(AR) -out:$@ -def:$(RUBYDEF) -machine:$(MACHINE)
+ $(AR) $(ARFLAGS)$@ -def:$(RUBYDEF)
$(LIBRUBY_SO): $(LIBRUBY_A) $(EXTOBJS) $(RUBYDEF) $*.res
- $(CC) $(LDFLAGS) $(MAINOBJ) $(EXTOBJS) $(LIBRUBY_A) $*.res $(LIBS) \
- -Fe$@ -link -dll -def:$(RUBYDEF)
+ @echo. $(EXTOBJS)
+ $(LIBRUBY_LDSHARED) $(MAINOBJ) $(EXTOBJS) $(LIBRUBY_A) $*.res $(LIBS) \
+ -Fe$@ $(LDFLAGS) $(LIBRUBY_DLDFLAGS)
$(RUBYDEF): $(LIBRUBY_A) miniruby$(EXEEXT)
- .\miniruby$(EXEEXT) $(srcdir)/win32/mkexports.rb -output=$@ $(LIBRUBY_A)
+ $(MINIRUBY) $(srcdir)/win32/mkexports.rb -output=$@ $(LIBRUBY_A)
+
+{$(srcdir)/win32}.def.lib:
+ $(AR) $(ARFLAGS)$@ -def:$<
install: rbconfig.rb
- .\miniruby.exe $(srcdir)/instruby.rb $(DESTDIR)
+ $(MINIRUBY) $(srcdir)/instruby.rb $(DESTDIR)
+ $(MINIRUBY) $(srcdir)/ext/extmk.rb $(MAKE) -$(MFLAGS)$(MAKEFLAGS) DESTDIR=$(DESTDIR) install
clean: clean-ext clean-local
@@ -393,7 +421,7 @@ clean-local:
@if exist *.res del *.res
clean-ext:
- @-.\miniruby$(EXEEXT) $(srcdir)/ext/extmk.rb clean
+ @-$(MINIRUBY) $(srcdir)/ext/extmk.rb $(MAKE) -$(MFLAGS)$(MAKEFLAGS) clean
distclean: distclean-ext distclean-local
@@ -427,35 +455,35 @@ distclean-local: clean-local
@if exist miniruby$(EXEEXT) del miniruby$(EXEEXT)
distclean-ext:
- @-.\miniruby$(EXEEXT) $(srcdir)/ext/extmk.rb distclean
+ @-$(MINIRUBY) $(srcdir)/ext/extmk.rb $(MAKE) -$(MFLAGS)$(MAKEFLAGS) 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
+ @miniruby$(EXEEXT) $(srcdir)/rubytest.rb
rbconfig.rb: miniruby$(EXEEXT) config.status
- @.\miniruby$(EXEEXT) $(srcdir)/mkconfig.rb -srcdir=$(srcdir) \
+ @$(MINIRUBY) $(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 $(RUBY_SO_NAME).rc: rbconfig.rb
- @.\miniruby$(EXEEXT) $(srcdir)/win32/resource.rb \
+ @$(MINIRUBY) $(srcdir)/win32/resource.rb \
-ruby_name=$(RUBY_INSTALL_NAME) \
-rubyw_name=$(RUBYW_INSTALL_NAME) \
-so_name=$(RUBY_SO_NAME) \
. $(icondirs) $(srcdir)/win32
{$(srcdir)/missing}.c.obj:
- $(CC) $(CFLAGS) -I. -I$(<D) $(CPPFLAGS) -c -Tc$(<:\=/)
+ $(CC) $(CFLAGS) $(XCFLAGS) -I. -I$(<D) $(CPPFLAGS) -c -Tc$(<:\=/)
{$(srcdir)/win32}.c.obj:
- $(CC) $(CFLAGS) -I. -I$(<D) $(CPPFLAGS) -c -Tc$(<:\=/)
+ $(CC) $(CFLAGS) $(XCFLAGS) -I. -I$(<D) $(CPPFLAGS) -c -Tc$(<:\=/)
{$(srcdir)}.c.obj:
- $(CC) $(CFLAGS) -I. -I$(<D) $(CPPFLAGS) -c -Tc$(<:\=/)
+ $(CC) $(CFLAGS) $(XCFLAGS) -I. -I$(<D) $(CPPFLAGS) -c -Tc$(<:\=/)
.c.obj:
- $(CC) $(CFLAGS) -I. $(CPPFLAGS) -c -Tc$(<:\=/)
+ $(CC) $(CFLAGS) $(XCFLAGS) -I. $(CPPFLAGS) -c -Tc$(<:\=/)
.rc.res:
$(RC) -I. -I$(<D) $(iconinc) -I$(srcdir)/win32 $(RFLAGS) -fo$@ $(<:\=/)
@@ -467,6 +495,9 @@ $(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(RUBY_SO_NAME).rc: rbconfig.rb
{$(srcdir)}parse.c: parse.y
+ext/extinit.obj: ext/extinit.c $(SETUP)
+ $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) -Fo$@ -c ext/extinit.c
+
acosh.obj: {$(srcdir)}missing/acosh.c
alloca.obj: {$(srcdir)}missing/alloca.c
crypt.obj: {$(srcdir)}missing/crypt.c
diff --git a/win32/setup.mak b/win32/setup.mak
index 88c5822a37..328afa0d78 100644
--- a/win32/setup.mak
+++ b/win32/setup.mak
@@ -1,58 +1,82 @@
# -*- makefile -*-
-!IF "$(WIN32DIR)" == "win32"
+!if "$(srcdir)" != ""
+WIN32DIR = $(srcdir)/win32
+!elseif "$(WIN32DIR)" == "win32"
srcdir = .
-!ELSEIF "$(WIN32DIR)" == "$(WIN32DIR:/win32=)/win32"
+!elseif "$(WIN32DIR)" == "$(WIN32DIR:/win32=)/win32"
srcdir = $(WIN32DIR:/win32=)
-!ELSE
+!else
srcdir = $(WIN32DIR)/..
-!ENDIF
+!endif
OS = mswin32
RT = msvcrt
INCLUDE = !include
-MAKEFILE = $(WIN32DIR)/setup.mak
-
-!if "$(target)" == ""
-all: Makefile
- @echo type `$(MAKE)' to make ruby for $(OS).
+APPEND = echo>>$(MAKEFILE)
+!ifdef MAKEFILE
+MAKE = $(MAKE) -f $(MAKEFILE)
!else
-all: $(target)
+MAKEFILE = Makefile
!endif
+ARCH = PROCESSOR_ARCHITECTURE
+CPU = PROCESSOR_LEVEL
-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=
-
-Makefile:
- @echo Creating <<$@
+all: -prologue- -generic- -epilogue-
+i386-$(OS): -prologue- -i386- -epilogue-
+i486-$(OS): -prologue- -i486- -epilogue-
+i586-$(OS): -prologue- -i586- -epilogue-
+i686-$(OS): -prologue- -i686- -epilogue-
+alpha-$(OS): -prologue- -alpha- -epilogue-
+
+-prologue-: nul
+ @echo Creating <<$(MAKEFILE)
### Makefile for ruby $(OS) ###
srcdir = $(srcdir:\=/)
-!if defined(PROCESSOR_ARCHITECTURE)
-PROCESSOR_ARCHITECTURE = $(PROCESSOR_ARCHITECTURE)
+
+<<KEEP
+
+-generic-: nul
+!if defined($(ARCH)) || defined($(CPU))
+ @type << >>$(MAKEFILE)
+!if defined($(ARCH))
+$(ARCH) = $(PROCESSOR_ARCHITECTURE)
!endif
-!if defined(PROCESSOR_LEVEL)
-PROCESSOR_LEVEL = $(PROCESSOR_LEVEL)
+!if defined($(CPU))
+$(CPU) = $(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 =
+
+<<
+!endif
+
+-alpha-: nul
+ @$(APPEND) $(ARCH) = alpha
+-ix86-: nul
+ @$(APPEND) $(ARCH) = x86
+
+-i386-: -ix86-
+ @$(APPEND) $(CPU) = 3
+-i486-: -ix86-
+ @$(APPEND) $(CPU) = 4
+-i586-: -ix86-
+ @$(APPEND) $(CPU) = 5
+-i686-: -ix86-
+ @$(APPEND) $(CPU) = 6
+
+-epilogue-: nul
+ @type << >>$(MAKEFILE)
+# OS = $(OS)
+# RT = $(RT)
+# RUBY_INSTALL_NAME = ruby
+# RUBY_SO_NAME = $$(RT)-$$(RUBY_INSTALL_NAME)17
+# prefix = /usr
+# CFLAGS = -nologo -MD $$(DEBUGFLAGS) $$(OPTFLAGS) $$(PROCESSOR_FLAG)
+# CPPFLAGS = -I. -I$$(srcdir) -I$$(srcdir)/missing -DLIBRUBY_SO=\"$$(LIBRUBY_SO)\"
+# STACK = 0x2000000
+# LDFLAGS = $$(CFLAGS) -Fm
+# XLDFLAGS =
+# RFLAGS = -r
+# EXTLIBS =
+
$(INCLUDE) $$(srcdir)/win32/Makefile.sub
-<<KEEP
+<<
+ @echo type `$(MAKE)' to make ruby for $(OS).