diff options
Diffstat (limited to 'win32/setup.mak')
-rw-r--r-- | win32/setup.mak | 100 |
1 files changed, 75 insertions, 25 deletions
diff --git a/win32/setup.mak b/win32/setup.mak index 0f6b26d53a..8c27994821 100644 --- a/win32/setup.mak +++ b/win32/setup.mak @@ -22,7 +22,6 @@ MAKEFILE = Makefile CPU = PROCESSOR_LEVEL CC = $(CC) -nologo CPP = $(CC) -EP -AS = $(AS) -nologo all: -prologue- -generic- -epilogue- i386-mswin32: -prologue- -i386- -epilogue- @@ -60,27 +59,19 @@ USE_RUBYGEMS = $(USE_RUBYGEMS) !if defined(ENABLE_DEBUG_ENV) ENABLE_DEBUG_ENV = $(ENABLE_DEBUG_ENV) !endif -!if defined(MJIT_SUPPORT) -MJIT_SUPPORT = $(MJIT_SUPPORT) +!if defined(RJIT_SUPPORT) +RJIT_SUPPORT = $(RJIT_SUPPORT) !endif # TOOLS << !if defined(BASERUBY) + $(BASERUBY:/=\) "$(srcdir)/tool/missing-baseruby.bat" @echo BASERUBY = $(BASERUBY:/=\)>> $(MAKEFILE) -!else - @for %I in (ruby.exe) do @echo BASERUBY = %~s$$PATH:I>> $(MAKEFILE) -!endif - @type << >> $(MAKEFILE) -$(BANG)if "$$(BASERUBY)" == "" -BASERUBY = echo executable host ruby is required. use --with-baseruby option.^& exit 1 -HAVE_BASERUBY = no -$(BANG)elseif [($$(BASERUBY) -eexit) > nul 2> nul] == 0 -HAVE_BASERUBY = yes -$(BANG)else -HAVE_BASERUBY = no -$(BANG)endif -<< +!endif +!if "$(RUBY_DEVEL)" == "yes" + RUBY_DEVEL = yes +!endif !if "$(GIT)" != "" @echo GIT = $(GIT)>> $(MAKEFILE) !endif @@ -88,6 +79,10 @@ $(BANG)endif @echo HAVE_GIT = $(HAVE_GIT)>> $(MAKEFILE) !endif +!if "$(WITH_GMP)" == "yes" + @echo>>$(MAKEFILE) USE_GMP = 1 +!endif + -osname-section-: @$(APPEND) @echo # TARGET>>$(MAKEFILE) @@ -124,16 +119,61 @@ int main(void) {FILE *volatile f = stdin; return 0;} -headers-: nul -check-psapi.h: nul - ($(CC) -MD <<conftest.c psapi.lib -link && echo>>$(MAKEFILE) HAVE_PSAPI_H=1) & $(WIN32DIR:/=\)\rm.bat conftest.* -#include <windows.h> -#include <psapi.h> -int main(void) {return (EnumProcesses(NULL,0,NULL) ? 0 : 1);} +-headers-: vs2022-fp-bug + +# Check the bug reported at: +# https://developercommunity.visualstudio.com/t/With-__assume-isnan-after-isinf/1515649 +# https://developercommunity.visualstudio.com/t/Prev-Issue---with-__assume-isnan-/1597317 +vs2022-fp-bug: + @echo checking for $(@:-= ) + @echo <<$@.c > NUL +/* compile with -O2 */ +#include <math.h> +#include <float.h> +#include <stdio.h> + +#define value_finite(d) 'f' +#define value_infinity() 'i' +#define value_nan() 'n' + +#ifdef NO_ASSUME +# define ASSUME_TRUE() (void)0 +#else +# define ASSUME_TRUE() __assume(1) +#endif + +static int +check_value(double value) +{ + if (isinf(value)) { + return value_infinity(); + } + else if (isnan(value)) { + return value_nan(); + } + + ASSUME_TRUE(); + return value_finite(value); +} + +int +main(void) +{ + int c = check_value(nan("")); + printf("NaN=>%c\n", c); + return c != value_nan(); +} << + @( \ + $(CC) -O2 $@.c && .\$@ || \ + set bug=%ERRORLEVEL% \ + echo This compiler has an optimization bug \ + ) & $(WIN32DIR:/=\)\rm.bat $@.* & exit /b %bug% -version-: nul verconf.mk verconf.mk: nul + @findstr /R /C:"^#define RUBY_ABI_VERSION " $(srcdir:/=\)\include\ruby\internal\abi.h > $(@) @$(CPP) -I$(srcdir) -I$(srcdir)/include <<"Creating $(@)" > $(*F).bat && cmd /c $(*F).bat > $(@) @echo off #define RUBY_REVISION 0 @@ -155,10 +195,14 @@ echo MAJOR = RUBY_VERSION_MAJOR echo MINOR = RUBY_VERSION_MINOR echo TEENY = RUBY_VERSION_TEENY #if defined RUBY_PATCHLEVEL && RUBY_PATCHLEVEL < 0 -echo RUBY_DEVEL = yes +#include "$(@F)" +echo ABI_VERSION = RUBY_ABI_VERSION #endif set /a MSC_VER = _MSC_VER -#if _MSC_VER > 1900 +#if _MSC_VER >= 1920 +set /a MSC_VER_LOWER = MSC_VER/20*20+0 +set /a MSC_VER_UPPER = MSC_VER/20*20+19 +#elif _MSC_VER >= 1900 set /a MSC_VER_LOWER = MSC_VER/10*10+0 set /a MSC_VER_UPPER = MSC_VER/10*10+9 #endif @@ -237,9 +281,15 @@ MACHINE = x86 # RFLAGS = -r # EXTLIBS = CC = $(CC) -AS = $(AS) +!if "$(AS)" != "ml64" +AS = $(AS) -nologo +!endif << - @(for %I in (cl.exe) do @set MJIT_CC=%~$$PATH:I) && (call echo MJIT_CC = "%MJIT_CC:\=/%" -nologo>>$(MAKEFILE)) +!if "$(AS)" == "ml64" + @(findstr -r -c:"^MACHINE *= *x86" $(MAKEFILE) > nul && \ + (echo AS = $(AS:64=) -nologo) || \ + (echo AS = $(AS) -nologo) ) >>$(MAKEFILE) +!endif @type << >>$(MAKEFILE) $(BANG)include $$(srcdir)/win32/Makefile.sub |