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:
parent
9f7717e836
commit
8d816aef2e
3 changed files with 29 additions and 63 deletions
|
@ -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>
|
Sat Jan 12 08:58:47 2013 Aaron Patterson <aaron@tenderlovemaking.com>
|
||||||
|
|
||||||
* ext/psych/lib/psych/visitors/to_ruby.rb: merge key values that
|
* ext/psych/lib/psych/visitors/to_ruby.rb: merge key values that
|
||||||
|
|
18
win32/rtname.cmd
Normal file
18
win32/rtname.cmd
Normal 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
|
|
@ -77,10 +77,10 @@ USE_RUBYGEMS = $(USE_RUBYGEMS)
|
||||||
-system-vars64-: -osname64- -runtime-
|
-system-vars64-: -osname64- -runtime-
|
||||||
|
|
||||||
-osname32-: nul
|
-osname32-: nul
|
||||||
@echo TARGET_OS = mswin32 >>$(MAKEFILE)
|
@echo TARGET_OS = mswin32>>$(MAKEFILE)
|
||||||
|
|
||||||
-osname64-: nul
|
-osname64-: nul
|
||||||
@echo TARGET_OS = mswin64 >>$(MAKEFILE)
|
@echo TARGET_OS = mswin64>>$(MAKEFILE)
|
||||||
|
|
||||||
-osname-: nul
|
-osname-: nul
|
||||||
@echo !ifndef TARGET_OS>>$(MAKEFILE)
|
@echo !ifndef TARGET_OS>>$(MAKEFILE)
|
||||||
|
@ -93,69 +93,12 @@ USE_RUBYGEMS = $(USE_RUBYGEMS)
|
||||||
@$(WIN32DIR:/=\)\rm.bat conftest.*
|
@$(WIN32DIR:/=\)\rm.bat conftest.*
|
||||||
|
|
||||||
-runtime-: nul
|
-runtime-: nul
|
||||||
@$(CC) -MD <<rtname.c user32.lib -link > nul
|
@$(CC) -MD <<conftest.c user32.lib -link > nul
|
||||||
#include <windows.h>
|
|
||||||
#include <memory.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <stddef.h>
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
int main(void) {FILE *volatile f = stdin; return 0;}
|
||||||
#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;
|
|
||||||
}
|
|
||||||
<<
|
<<
|
||||||
@.\rtname >>$(MAKEFILE)
|
@$(WIN32DIR:/=\)\rtname conftest.exe >>$(MAKEFILE)
|
||||||
@for %I in (rtname.*) do @del %I
|
@$(WIN32DIR:/=\)\rm.bat conftest.*
|
||||||
|
|
||||||
-version-: nul
|
-version-: nul
|
||||||
@$(APPEND)
|
@$(APPEND)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue