diff options
Diffstat (limited to 'win32/Makefile.sub')
-rw-r--r-- | win32/Makefile.sub | 43 |
1 files changed, 27 insertions, 16 deletions
diff --git a/win32/Makefile.sub b/win32/Makefile.sub index b27866adb3..88bf4f8958 100644 --- a/win32/Makefile.sub +++ b/win32/Makefile.sub @@ -34,7 +34,6 @@ iconinc=-I$(icondirs: = -I) !endif ############### -VPATH = $(srcdir);$(srcdir)/missing;$(srcdir)/win32 .SUFFIXES: .y .def .lib !if !defined(CC) @@ -92,6 +91,8 @@ OS = mswin32 !error RT not defined. Retry from configure pass. !endif +arch = $(ARCH)-$(OS) + !ifndef RUBY_SO_NAME RUBY_SO_NAME = $(RT)-$(RUBY_INSTALL_NAME)$(MAJOR)$(MINOR) !endif @@ -150,7 +151,7 @@ ARFLAGS = -machine:$(MACHINE) -out: CC = $(CC) -nologo LD = $(CC) LDSHARED = $(LD) -LD -XCFLAGS = -DRUBY_EXPORT -I. -I$(srcdir) -I$(srcdir)/missing +XCFLAGS = -DRUBY_EXPORT -I$(arch_hdrdir) -I$(hdrdir) -I$(srcdir) -I$(srcdir)/missing !if $(MSC_VER) >= 1400 # Prevents VC++ 2005 (cl ver 14) warnings CPPFLAGS = $(CPPFLAGS) -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE @@ -199,6 +200,10 @@ INSTALLED_LIST= .installed.list WINMAINOBJ = winmain.$(OBJEXT) MINIOBJS = dmydln.$(OBJEXT) +arch_hdrdir = $(EXTOUT)/include/$(arch) +hdrdir = $(srcdir)/include +VPATH = $(arch_hdrdir)/ruby;$(hdrdir)/ruby;$(srcdir);$(srcdir)/missing;$(srcdir)/win32 + all: $(srcdir)/win32/Makefile.sub $(srcdir)/common.mk ruby: $(PROGRAM) @@ -210,6 +215,7 @@ $(MKFILES): $(srcdir)/win32/Makefile.sub $(srcdir)/win32/configure.bat $(srcdir) $(COMSPEC) /C $(srcdir:/=\)\win32\configure.bat $(configure_args) @echo $(MKFILES) should be updated, re-run $(MAKE). +RUBY_CONFIG_H = $(arch_hdrdir)/ruby/config.h CONFIG_H = ./.config.h.time config: config.status @@ -218,9 +224,15 @@ config.status: $(CONFIG_H) $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub @echo Creating config.h - @$(COMSPEC) /C $(srcdir:/=\)\win32\ifchange.bat config.h << +!if !exist("$(arch_hdrdir)") + @md $(arch_hdrdir:/=\) +!endif +!if !exist("$(arch_hdrdir)/ruby") + @md $(arch_hdrdir:/=\)\ruby +!endif + @$(COMSPEC) /C $(srcdir:/=\)\win32\ifchange.bat $(RUBY_CONFIG_H:/=\) << #if _MSC_VER != $(MSC_VER) -#error MSC version unmatch +#error MSC version unmatch: _MSC_VER: $(MSC_VER) is expected. #endif #define STDC_HEADERS 1 #define HAVE_SYS_TYPES_H 1 @@ -329,25 +341,24 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub #define RUBY_LIB "/lib/ruby/$(MAJOR).$(MINOR)" #define RUBY_SITE_LIB "/lib/ruby/site_ruby" #define RUBY_SITE_LIB2 "/lib/ruby/site_ruby/$(MAJOR).$(MINOR)" -#define RUBY_PLATFORM "$(ARCH)-$(OS)" +#define RUBY_PLATFORM "$(arch)" #define RUBY_ARCHLIB "/lib/ruby/$(MAJOR).$(MINOR)/$(ARCH)-$(OS)" #define RUBY_SITE_ARCHLIB "/lib/ruby/site_ruby/$(MAJOR).$(MINOR)/$(ARCH)-$(RT)" << @exit > $(@:/=\) -#!if exist(config.h) +#!if exist($(RUBY_CONFIG_H)) #! if exist(config_h.bak) -# @del config_h.bak +# @del $(RUBY_CONFIG_H:.h=_h).bak #! endif -# @ren config.h config_h.bak +# @copy $(RUBY_CONFIG_H) $(RUBY_CONFIG_H:.h=_h).bak #!endif -# @ren config_h~ config.h -#!if exist(config.h) +#!if exist($(RUBY_CONFIG_H)) # @echo NMAKE will abort if config.h is changed, then restart NMAKE. -# @fc.exe config.h config_h.bak > nul -# @echo config.h unchanged. -# @del config.h -# @ren config_h.bak config.h +# @fc.exe $(RUBY_CONFIG_H) $(RUBY_CONFIG_H:.h=_h).bak > nul +# @echo $(RUBY_CONFIG_H) unchanged. +# @del $(RUBY_CONFIG_H) +# @ren $(RUBY_CONFIG_H:.h=_h).bak $(RUBY_CONFIG_H) #!endif config.status: $(MKFILES) $(srcdir)/win32/Makefile.sub $(srcdir)/common.mk @@ -456,7 +467,7 @@ s,@LINK_SO@,@$$(RM) $$(@:/=\).manifest,;t t s,@COMPILE_C@,$$(CC) $$(INCFLAGS) $$(CFLAGS) $$(CPPFLAGS) -c -Tc$$(<:\=/),;t t s,@COMPILE_CXX@,$$(CXX) $$(INCFLAGS) $$(CXXFLAGS) $$(CPPFLAGS) -c -Tp$$(<:\=/),;t t s,@COMPILE_RULES@,{$$(hdrdir)}.%s{}.%s: {$$(topdir)}.%s{}.%s: {$$(srcdir)}.%s{}.%s: .%s.%s:,;t t -s,@RULE_SUBST@,{.;$$(srcdir);$$(topdir);$$(hdrdir)}%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,;t t @@ -557,7 +568,7 @@ lex.c: {$(srcdir)}lex.c.blt sed -e "s!^ *extern char \*getenv();!/* & */!;s/^\(#.*\)y\.tab/\1parse/" y.tab.c > $@ @del y.tab.c -$(OBJS): {$(srcdir)}win32/win32.h +$(OBJS): {$(hdrdir)/ruby}win32.h dir.$(OBJEXT) win32.$(OBJEXT): {$(srcdir)}win32/dir.h |