From f091f360356f942cf829ae741bd7dcc7c189c991 Mon Sep 17 00:00:00 2001 From: nobu Date: Wed, 13 Apr 2005 10:25:41 +0000 Subject: * configure.in (mingw32): use actual runtime DLL name as ruby DLL name and default load path. * win32/Makefile.sub, win32/setup.mak: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8314 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- win32/Makefile.sub | 6 +++-- win32/setup.mak | 71 ++++++++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 68 insertions(+), 9 deletions(-) (limited to 'win32') diff --git a/win32/Makefile.sub b/win32/Makefile.sub index 8a59bda74c..45b7fd4be2 100644 --- a/win32/Makefile.sub +++ b/win32/Makefile.sub @@ -70,9 +70,11 @@ DEBUGFLAGS = -Zi !if !defined(OPTFLAGS) OPTFLAGS = -O2b2xg- !endif -!if !defined(OS) || !defined(RT) +!if !defined(OS) OS = mswin32 -RT = msvcrt +!endif +!if !defined(RT) +!error RT not defined. Retry from configure pass. !endif !ifndef RUBY_SO_NAME diff --git a/win32/setup.mak b/win32/setup.mak index fa0c260001..a8ba23586e 100644 --- a/win32/setup.mak +++ b/win32/setup.mak @@ -13,8 +13,7 @@ srcdir = $(WIN32DIR)/.. prefix = /usr !endif OS = mswin32 -RT = msvcrt -INCLUDE = !include +BANG = ! APPEND = echo>>$(MAKEFILE) !ifdef MAKEFILE MAKE = $(MAKE) -f $(MAKEFILE) @@ -23,7 +22,8 @@ MAKEFILE = Makefile !endif ARCH = PROCESSOR_ARCHITECTURE CPU = PROCESSOR_LEVEL -CPP = cl -nologo -EP +CC = cl -nologo +CPP = $(CC) -EP all: -prologue- -generic- -epilogue- i386-$(OS): -prologue- -i386- -epilogue- @@ -32,7 +32,9 @@ i586-$(OS): -prologue- -i586- -epilogue- i686-$(OS): -prologue- -i686- -epilogue- alpha-$(OS): -prologue- -alpha- -epilogue- --prologue-: nul +-prologue-: -basic-vars- -system-vars- -version- + +-basic-vars-: nul @type << > $(MAKEFILE) ### Makefile for ruby $(OS) ### srcdir = $(srcdir:\=/) @@ -42,7 +44,63 @@ EXTSTATIC = $(EXTSTATIC) RDOCTARGET = $(RDOCTARGET) !endif << - @$(CPP) -I$(srcdir) -DRUBY_EXTERN="//" <<"Creating $(MAKEFILE)" >> $(MAKEFILE) + +-system-vars-: -osname- -runtime- + +-osname-: nul + @echo OS = mswin32 >>$(MAKEFILE) + +-runtime-: nul + @$(CC) -MD < nul +#include +#include +#include +#include +#include +#ifndef MAXPATHLEN +# define MAXPATHLEN 1024 +#endif + +int +runtime_name() +{ + char libpath[MAXPATHLEN+1]; + char *p, *base = NULL; + HMODULE msvcrt = NULL; + MEMORY_BASIC_INFORMATION m; + + memset(&m, 0, sizeof(m)); + if (VirtualQuery(stdin, &m, sizeof(m)) && m.State == MEM_COMMIT) + msvcrt = (HMODULE)m.AllocationBase; + GetModuleFileName(msvcrt, libpath, sizeof libpath); + + libpath[sizeof(libpath) - 1] = '\0'; + for (p = libpath; *p; p = CharNext(p)) { + if (*p == '\\') { + base = ++p; + } + } + if (!base) return 0; + if (p = strchr(base, '.')) *p = '\0'; + for (p = base; *p; p = CharNext(p)) { + if (isascii(*p) && isupper(*p)) + *p = tolower(*p); + } + printf("RT = %s\n", base); + return 1; +} + +int main(int argc, char **argv) +{ + if (!runtime_name()) return EXIT_FAILURE; + return EXIT_SUCCESS; +} +<< + @.\rtname >>$(MAKEFILE) + @del rtname.* + +-version-: nul + @$(CPP) -I$(srcdir) -DRUBY_EXTERN="//" <<"Creating $(MAKEFILE)" | findstr /v /r ^^$$ >>$(MAKEFILE) #include "version.h" MAJOR = RUBY_VERSION_MAJOR MINOR = RUBY_VERSION_MINOR @@ -79,7 +137,6 @@ $(CPU) = $(PROCESSOR_LEVEL) -epilogue-: nul @type << >>$(MAKEFILE) # OS = $(OS) -# RT = $(RT) # RUBY_INSTALL_NAME = ruby # RUBY_SO_NAME = $$(RT)-$$(RUBY_INSTALL_NAME)$$(MAJOR)$$(MINOR) # CFLAGS = -nologo -MD $$(DEBUGFLAGS) $$(OPTFLAGS) $$(PROCESSOR_FLAG) @@ -90,7 +147,7 @@ $(CPU) = $(PROCESSOR_LEVEL) # RFLAGS = -r # EXTLIBS = -$(INCLUDE) $$(srcdir)/win32/Makefile.sub +$(BANG)include $$(srcdir)/win32/Makefile.sub << @$(srcdir:/=\)\win32\rm.bat config.h config.status @echo type `$(MAKE)' to make ruby for $(OS). -- cgit v1.2.3