summaryrefslogtreecommitdiff
path: root/win32
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-01-08 11:02:10 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-01-08 11:02:10 +0000
commit1889c00e0710c43a64c1706ecabdc26d91890daa (patch)
tree90857a5717516b31561673aeff5ffee5256d2b91 /win32
parentedeeefb7a544aadf2f788c8c6f88cb77bd941ac0 (diff)
* win{32,ce}/Makefile.sub: merged.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14955 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'win32')
-rw-r--r--win32/Makefile.sub171
1 files changed, 153 insertions, 18 deletions
diff --git a/win32/Makefile.sub b/win32/Makefile.sub
index 4a22eef1ac..2c6e8c4afd 100644
--- a/win32/Makefile.sub
+++ b/win32/Makefile.sub
@@ -8,6 +8,16 @@ NULL = nul
MFLAGS=-l
!endif
+!ifndef CROSS_COMPILING
+CROSS_COMPILING = 0
+!endif
+!ifndef LARGEFILE_SUPPORT
+LARGEFILE_SUPPORT = 1
+!endif
+!ifndef win_srcdir
+win_srcdir = $(srcdir)/win32
+!endif
+
#### Start of system configuration section. ####
!if defined(pathlist)
@@ -102,6 +112,9 @@ arch = $(ARCH)-$(OS)
!ifndef RUBY_SO_NAME
RUBY_SO_NAME = $(RT)-$(RUBY_INSTALL_NAME)$(MAJOR)$(MINOR)$(TEENY)
!endif
+!ifndef RUBY_PLATFORM
+RUBY_PLATFORM = $(arch)
+!endif
!if !defined(prefix)
prefix = /usr
@@ -133,8 +146,11 @@ RDOCTARGET = install-doc
OUTFLAG = -Fe
COUTFLAG = -Fo
+!if !defined(RUNTIMEFLAG)
+RUNTIMEFLAG = -MD
+!endif
!if !defined(CFLAGS)
-CFLAGS = -MD $(DEBUGFLAGS) $(OPTFLAGS) $(PROCESSOR_FLAG)
+CFLAGS = $(RUNTIMEFLAG) $(DEBUGFLAGS) $(WARNFLAGS) $(OPTFLAGS) $(PROCESSOR_FLAG)
!endif
!if !defined(CXXFLAGS)
CXXFLAGS = $(CFLAGS)
@@ -151,14 +167,18 @@ RFLAGS = -r
!if !defined(EXTLIBS)
EXTLIBS =
!endif
+!if !defined(LIBS)
LIBS = oldnames.lib user32.lib advapi32.lib shell32.lib ws2_32.lib $(EXTLIBS)
+!endif
+!if !defined(MISSING)
MISSING = acosh.obj crypt.obj erf.obj strlcpy.obj strlcat.obj win32.obj
+!endif
ARFLAGS = -machine:$(MACHINE) -out:
CC = $(CC) -nologo
LD = $(CC)
LDSHARED = $(LD) -LD
-XCFLAGS = -DRUBY_EXPORT -I. -I$(arch_hdrdir) -I$(hdrdir) -I$(srcdir) -I$(srcdir)/missing
+XCFLAGS = -DRUBY_EXPORT -I. -I$(arch_hdrdir) -I$(hdrdir) -I$(srcdir) -I$(srcdir)/missing $(XCFLAGS)
!if $(MSC_VER) >= 1400
# Prevents VC++ 2005 (cl ver 14) warnings
DEFS = -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
@@ -166,7 +186,7 @@ MANIFESTTOOL = mt -nologo
LDSHARED_1 = $(MANIFESTTOOL) -manifest $(@).manifest -outputresource:$(@);2
LDSHARED_2 = @$(RM) $(@:/=\).manifest
!endif
-CPPFLAGS = $(DEFS) $(CPPFLAGS)
+CPPFLAGS = $(DEFS) $(ARCHDEFS) $(CPPFLAGS)
DLDFLAGS = $(LDFLAGS) -dll
SOLIBS =
@@ -175,14 +195,31 @@ LIBRUBY_LDSHARED = $(LDSHARED)
LIBRUBY_DLDFLAGS = $(EXTLDFLAGS) -def:$(RUBYDEF)
EXEEXT = .exe
+!if !defined(PROGRAM)
PROGRAM=$(RUBY_INSTALL_NAME)$(EXEEXT)
+!endif
+!if !defined(WPROGRAM) && defined(RUBYW_INSTALL_NAME)
WPROGRAM=$(RUBYW_INSTALL_NAME)$(EXEEXT)
+!endif
RUBYDEF = $(RUBY_SO_NAME).def
-MINIRUBY = .\miniruby$(EXEEXT) -I$(srcdir)/lib $(MINIRUBYOPT)
-RUNRUBY = .\ruby$(EXEEXT) "$(srcdir)/runruby.rb" --extout="$(EXTOUT)" --
+!if $(CROSS_COMPILING)
+MINIRUBY = $(RUBY) -I$(MAKEDIR) -rfake
+RUNRUBY = $(MINIRUBY)
+!else
+MINIRUBY = .\miniruby$(EXEEXT) -I$(srcdir)/lib
+RUNRUBY = .\ruby$(EXEEXT)
+!endif
+MINIRUBY = $(MINIRUBY) $(MINIRUBYOPT)
+RUNRUBY = $(RUNRUBY) "$(srcdir)/runruby.rb" --extout="$(EXTOUT)" --
+!ifndef RUBY
+RUBY = ruby
+!endif
!if !defined(STACK)
STACK = 0x200000
+!if defined(STACK_COMMIT)
+STACK = $(STACK),$(STACK_COMMIT)
+!endif
!endif
ORGLIBPATH = $(LIB)
@@ -194,7 +231,11 @@ LIBRUBY = $(RUBY_SO_NAME).lib
LIBRUBYARG = $(LIBRUBY)
THREAD_MODEL = win32
+!if $(CROSS_COMPILING)
+PREP = fake.rb
+!else
PREP = miniruby$(EXEEXT)
+!endif
!if !defined(EXTSTATIC)
EXTSTATIC =
@@ -205,22 +246,43 @@ ASMEXT = asm
INSTALLED_LIST= .installed.list
+!if [find "revision.h" $(srcdir:/=\)\version.h > nul 2> nul] == 0
+REVISION_H = revision.h
+REVISION_UP = revision-up
+!else
+REVISION_H = version.h
+REVISION_UP =
+!endif
+
+!if !defined(WINMAINOBJ)
WINMAINOBJ = winmain.$(OBJEXT)
+!endif
MINIOBJS = dmydln.$(OBJEXT) miniprelude.$(OBJEXT)
+LIBOBJS = acosh.obj crypt.obj erf.obj strlcpy.obj strlcat.obj win32.obj $(LIBOBJS)
+
+!ifndef COMMON_LIBS
+COMMON_LIBS = m
+!endif
+!ifndef COMMON_MACROS
+COMMON_MACROS = WIN32_LEAN_AND_MEAN WIN32
+!endif
+!ifndef COMMON_HEADERS
+COMMON_HEADERS = winsock2.h windows.h
+!endif
arch_hdrdir = $(EXTOUT)/include/$(arch)
hdrdir = $(srcdir)/include
-VPATH = $(arch_hdrdir)/ruby;$(hdrdir)/ruby;$(srcdir);$(srcdir)/enc;$(srcdir)/missing;$(srcdir)/win32
+VPATH = $(arch_hdrdir)/ruby;$(hdrdir)/ruby;$(srcdir);$(srcdir)/enc;$(srcdir)/missing;$(win_srcdir)
-all: $(srcdir)/win32/Makefile.sub $(srcdir)/common.mk
+all: $(srcdir)/win32/Makefile.sub $(win_srcdir)/Makefile.sub $(srcdir)/common.mk
ruby: $(PROGRAM)
rubyw: $(WPROGRAM)
!include $(srcdir)/common.mk
-$(MKFILES): $(srcdir)/win32/Makefile.sub $(srcdir)/win32/configure.bat $(srcdir)/win32/setup.mak
- $(COMSPEC) /C $(srcdir:/=\)\win32\configure.bat $(configure_args)
+$(MKFILES): $(srcdir)/win32/Makefile.sub $(win_srcdir)/Makefile.sub $(win_srcdir)/configure.bat $(win_srcdir)/setup.mak
+ $(COMSPEC) /C $(win_srcdir:/=\)\configure.bat $(configure_args)
@echo $(MKFILES) should be updated, re-run $(MAKE).
RUBY_CONFIG_H = $(arch_hdrdir)/ruby/config.h
@@ -230,7 +292,13 @@ config: config.status
config.status: $(CONFIG_H)
-$(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub
+BANG = !
+
+!if exist(config.h)
+!include config.h
+!endif
+
+$(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub $(win_srcdir)/Makefile.sub
@echo Creating config.h
!if !exist("$(arch_hdrdir)")
@md $(arch_hdrdir:/=\)
@@ -262,7 +330,11 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub
!endif
#define SIZEOF___INT64 8
#define _INTEGRAL_MAX_BITS 64
+!if $(LARGEFILE_SUPPORT)
#define SIZEOF_OFF_T 8
+!else
+#define SIZEOF_OFF_T 4
+!endif
!if "$(ARCH)" == "x64" || "$(ARCH)" == "ia64"
#define SIZEOF_VOIDP 8
!else
@@ -290,7 +362,9 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub
#define FUNC_FASTCALL(x) __fastcall x
#define RUBY_EXTERN extern __declspec(dllimport)
#define HAVE_DECL_SYS_NERR 1
+!if !defined(WIN32_WCE)
#define HAVE_LIMITS_H 1
+!endif
#define HAVE_FCNTL_H 1
#define HAVE_SYS_UTIME_H 1
#define HAVE_FLOAT_H 1
@@ -301,7 +375,9 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub
#define HAVE_ST_RDEV 1
#define GETGROUPS_T int
#define RETSIGTYPE void
+!if !defined(WIN32_WCE)
#define HAVE_ALLOCA 1
+!endif
#define HAVE_DUP2 1
#define HAVE_MEMCMP 1
#define HAVE_MEMMOVE 1
@@ -333,7 +409,9 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub
#define HAVE_TIMES 1
#define HAVE_FCNTL 1
#define HAVE_LINK 1
+!if !defined(WIN32_WCE)
#define HAVE__SETJMP 1
+!endif
#define HAVE_TELLDIR 1
#define HAVE_SEEKDIR 1
#define HAVE_MKTIME 1
@@ -348,7 +426,9 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub
#define FILE_READPTR _ptr
#define inline __inline
#define NEED_IO_SEEK_BETWEEN_RW 1
+!if "$(PROCESSOR_ARCHITECTURE)" == "x86" || "$(ARCH)" == "x64" || "$(ARCH)" == "ia64"
#define STACK_GROW_DIRECTION -1
+!endif
#define DEFAULT_KCODE KCODE_NONE
#define DLEXT ".so"
#define RUBY_LIB "/lib/ruby/$(MAJOR).$(MINOR).$(TEENY)"
@@ -360,6 +440,35 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub
#define RUBY_ARCHLIB "/lib/ruby/$(MAJOR).$(MINOR).$(TEENY)/$(ARCH)-$(OS)"
#define RUBY_SITE_ARCHLIB "/lib/ruby/site_ruby/$(MAJOR).$(MINOR).$(TEENY)/$(ARCH)-$(RT)"
#define RUBY_VENDOR_ARCHLIB "/lib/ruby/vendor_ruby/$(MAJOR).$(MINOR).$(TEENY)/$(ARCH)-$(RT)"
+#define LIBRUBY_SO "$(LIBRUBY_SO)"
+#if 0
+$(BANG)if "$(RUBY_SO_NAME)"!="$$(RUBY_SO_NAME)" || "$(ARCH)-$(OS)"!="$$(ARCH)-$$(OS)"
+config.h: nul
+$(BANG)endif
+#endif
+!if defined(WIN32_WCE)
+#define GC_MALLOC_LIMIT 4000000
+#define stricmp _stricmp
+#define fopen wce_fopen
+#define open _open
+#define read _read
+#define write _write
+#define lseek _lseek
+
+#if _WIN32_WCE < 300
+ #define isascii(c) ( (c>=0x00&&c<=0x7f)?1:0 )
+ #define isspace(c) ( ((c>=0x09&&c<=0x0d)||c==0x20)?1:0 )
+ #define isdigit(c) ( (c>=0x30&&c<=0x39)?1:0 )
+ #define isupper(c) ( (c>='A'&&c<='Z')?1:0 )
+ #define isalpha(c) ( ((c>='A'&&c<='Z')||(c>='a'&&c<='z'))?1:0 )
+ #define isprint(c) ( (c>=0x20&&c<=0x7e)?1:0 )
+ #define isalnum(c) ( (isalpha(c)||isdigit(c))?1:0 )
+ #define iscntrl(c) ( ((c>=0x00&&c<=0x1f)||c==0x7f)?1:0 )
+ #define islower(c) ( (c>='a'&&c<='z')?1:0 )
+ #define ispunct(c) ( !(isalnum(c)||isspace(c))?1:0 )
+ #define isxdigit(c) ( ((c>=0&&c<=9)||(c>='A'&&c<='F')||(c>='a'&&c<='f'))?1:0 )
+#endif
+!endif
<<
@exit > $(@:/=\)
@@ -377,7 +486,7 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub
# @ren $(RUBY_CONFIG_H:.h=_h).bak $(RUBY_CONFIG_H)
#!endif
-config.status: $(MKFILES) $(srcdir)/win32/Makefile.sub $(srcdir)/common.mk
+config.status: $(MKFILES) $(srcdir)/win32/Makefile.sub $(win_srcdir)/Makefile.sub $(srcdir)/common.mk
@echo Creating $@
@exit <<$@
# Generated automatically by Makefile.sub.
@@ -433,7 +542,7 @@ s,@LN_S@,$(LN_S),;t t
s,@SET_MAKE@,MFLAGS = -$$(MAKEFLAGS),;t t
s,@RM@,$$(COMSPEC) /C $$(top_srcdir:/=\)\win32\rm.bat,;t t
s,@CP@,copy > nul,;t t
-s,@LIBOBJS@, acosh.obj crypt.obj erf.obj strlcpy.obj strlcat.obj win32.obj,;t t
+s,@LIBOBJS@,$(LIBOBJS),;t t
s,@ALLOCA@,$(ALLOCA),;t t
s,@DEFAULT_KCODE@,$(DEFAULT_KCODE),;t t
s,@EXEEXT@,.exe,;t t
@@ -488,9 +597,9 @@ s,@COMPILE_CXX@,$$(CXX) $$(INCFLAGS) $$(CXXFLAGS) $$(CPPFLAGS) $$(COUTFLAG)$$(@)
s,@COMPILE_RULES@,{$$(hdrdir)}.%s{}.%s: {$$(topdir)}.%s{}.%s: {$$(srcdir)}.%s{}.%s: .%s.%s:,;t t
s,@RULE_SUBST@,{.;$$(VPATH)}%s,;t t
s,@TRY_LINK@,$$(CC) -Feconftest $$(INCFLAGS) -I$$(hdrdir) $$(CPPFLAGS) $$(CFLAGS) $$(src) $$(LOCAL_LIBS) $$(LIBS) -link $$(LDFLAGS) $$(LIBPATH) $$(XLDFLAGS),;t t
-s,@COMMON_LIBS@,m,;t t
-s,@COMMON_MACROS@,WIN32_LEAN_AND_MEAN WIN32,;t t
-s,@COMMON_HEADERS@,winsock2.h windows.h,;t t
+s,@COMMON_LIBS@,$(COMMON_LIBS),;t t
+s,@COMMON_MACROS@,$(COMMON_MACROS),;t t
+s,@COMMON_HEADERS@,$(COMMON_HEADERS),;t t
s,@DISTCLEANFILES@,vc*.pdb,;t t
s,@EXPORT_PREFIX@, ,;t t
s,@arch@,$(ARCH)-$(OS),;t t
@@ -513,18 +622,22 @@ miniruby$(EXEEXT):
$(LDSHARED_1)
$(LDSHARED_2)
-$(PROGRAM): $(LIBRUBY_SO) $(RUBY_INSTALL_NAME).res
+!if "$(PROGRAM)" != ""
+$(PROGRAM): $(MAINOBJ) $(LIBRUBY_SO) $(RUBY_INSTALL_NAME).res
$(PURIFY) $(CC) $(MAINOBJ) $(RUBY_INSTALL_NAME).res \
$(OUTFLAG)$@ $(LIBRUBYARG) $(LDFLAGS) $(XLDFLAGS)
$(LDSHARED_1)
$(LDSHARED_2)
+!endif
+!if "$(WPROGRAM)" != ""
$(WPROGRAM): $(MAINOBJ) $(WINMAINOBJ) $(LIBRUBY_SO) $(RUBYW_INSTALL_NAME).res
$(PURIFY) $(CC) $(MAINOBJ) $(WINMAINOBJ) \
$(RUBYW_INSTALL_NAME).res $(OUTFLAG)$@ $(LIBRUBYARG) \
$(LDFLAGS) $(XLDFLAGS) -subsystem:Windows
$(LDSHARED_1)
$(LDSHARED_2)
+!endif
$(LIBRUBY_A): $(OBJS) $(DMYEXT)
$(AR) $(ARFLAGS)$@ $(OBJS) $(DMYEXT)
@@ -545,7 +658,7 @@ $(RUBYDEF): $(LIBRUBY_A) $(PREP)
$(MINIRUBY) $(srcdir)/win32/mkexports.rb \
-output=$@ -arch=$(ARCH) $(LIBRUBY_A)
-{$(srcdir)/win32}.def.lib:
+{$(win_srcdir)}.def.lib:
$(AR) $(ARFLAGS)$@ -def:$<
clean-local::
@@ -563,7 +676,25 @@ $(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(RUBY_SO_NAME).rc: $(RBCONFIG)
-ruby_name=$(RUBY_INSTALL_NAME) \
-rubyw_name=$(RUBYW_INSTALL_NAME) \
-so_name=$(RUBY_SO_NAME) \
- . $(icondirs) $(srcdir)/win32
+!if defined(WIN32_WCE)
+ -wce_ver=$(SUBSYSVERSION) \
+!endif
+ . $(icondirs) $(win_srcdir)
+
+fake.rb: $(MKFILES)
+ @echo Creating <<$@
+class Object
+ CROSS_COMPILING = RUBY_PLATFORM
+ remove_const :RUBY_PLATFORM
+ remove_const :RUBY_VERSION
+ RUBY_PLATFORM = "$(ARCH)"
+ RUBY_VERSION = "$(MAJOR).$(MINOR).$(TEENY)"
+end
+class File
+ remove_const :ALT_SEPARATOR
+ ALT_SEPARATOR = "\\"
+end
+<<KEEP
{$(srcdir)/enc}.c.obj:
$(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(COUTFLAG)$@ -c -Tc$(<:\=/)
@@ -571,6 +702,10 @@ $(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(RUBY_SO_NAME).rc: $(RBCONFIG)
$(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(COUTFLAG)$@ -c -Tc$(<:\=/)
{$(srcdir)/win32}.c.obj:
$(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(COUTFLAG)$@ -c -Tc$(<:\=/)
+{$(win_srcdir)}.c.obj:
+ $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(COUTFLAG)$@ -c -Tc$(<:\=/)
+{$(win_srcdir)/sys}.c.obj:
+ $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(COUTFLAG)$@ -c -Tc$(<:\=/)
{$(srcdir)}.c.obj:
$(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(COUTFLAG)$@ -c -Tc$(<:\=/)
.c.obj: