1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

setup.mak: -runtime-

* win32/setup.mak (-runtime-): see msvcrt from link header on mswin
  instead of running testing executable file, for cross compiling.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38791 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2013-01-12 07:12:49 +00:00
parent 9f7717e836
commit 8d816aef2e
3 changed files with 29 additions and 63 deletions

View file

@ -1,3 +1,8 @@
Sat Jan 12 16:12:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
* win32/setup.mak (-runtime-): see msvcrt from link header on mswin
instead of running testing executable file, for cross compiling.
Sat Jan 12 08:58:47 2013 Aaron Patterson <aaron@tenderlovemaking.com>
* ext/psych/lib/psych/visitors/to_ruby.rb: merge key values that

18
win32/rtname.cmd Normal file
View file

@ -0,0 +1,18 @@
@echo off
set rt=
set rtver=
set osver=
for /f "usebackq" %%I in (`dumpbin -dependents %1 ^| findstr -r -i "\<msvcr.*\.dll$"`) do set rt=%%~nI
if "%rt%" == "" (
(echo %0: %1 is not linked to msvcrt) 1>&2
exit 1
)
for %%i in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do @call set rt=%%rt:%%i=%%i%%
if "%rt%" == "msvcrt" (
call set rtver=60
) else (
call set rtver=%%rt:msvcr=%%
call set rt=msvcr%%rtver%%
call set osver=_%%rtver%%
)
for %%I in ("PLATFORM = $(TARGET_OS)%osver%" "RT = %rt%" "RT_VER = %rtver%") do @echo %%~I

View file

@ -77,10 +77,10 @@ USE_RUBYGEMS = $(USE_RUBYGEMS)
-system-vars64-: -osname64- -runtime-
-osname32-: nul
@echo TARGET_OS = mswin32 >>$(MAKEFILE)
@echo TARGET_OS = mswin32>>$(MAKEFILE)
-osname64-: nul
@echo TARGET_OS = mswin64 >>$(MAKEFILE)
@echo TARGET_OS = mswin64>>$(MAKEFILE)
-osname-: nul
@echo !ifndef TARGET_OS>>$(MAKEFILE)
@ -93,69 +93,12 @@ USE_RUBYGEMS = $(USE_RUBYGEMS)
@$(WIN32DIR:/=\)\rm.bat conftest.*
-runtime-: nul
@$(CC) -MD <<rtname.c user32.lib -link > nul
#include <windows.h>
#include <memory.h>
#include <string.h>
#include <stddef.h>
@$(CC) -MD <<conftest.c user32.lib -link > nul
#include <stdio.h>
#include <stdlib.h>
#ifndef MAXPATHLEN
# define MAXPATHLEN 1024
#endif
int
runtime_name()
{
char libpath[MAXPATHLEN+1];
char *p, *base = NULL, *ver = 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)) continue;
if (isupper(*p)) {
*p = tolower(*p);
}
if (!isdigit(*p)) {
ver = NULL;
} else if (!ver) {
ver = p;
}
}
if (ver) {
printf("PLATFORM = $$(TARGET_OS)_%s\n", ver);
}
else {
printf("PLATFORM = $$(TARGET_OS)\n");
ver = "60";
}
printf("RT = %s\n", base);
printf("RT_VER = %s\n", ver);
return 1;
}
int main(int argc, char **argv)
{
if (!runtime_name()) return EXIT_FAILURE;
return EXIT_SUCCESS;
}
int main(void) {FILE *volatile f = stdin; return 0;}
<<
@.\rtname >>$(MAKEFILE)
@for %I in (rtname.*) do @del %I
@$(WIN32DIR:/=\)\rtname conftest.exe >>$(MAKEFILE)
@$(WIN32DIR:/=\)\rm.bat conftest.*
-version-: nul
@$(APPEND)