From: "nobu (Nobuyoshi Nakada) via ruby-core" Date: 2024-11-30T01:19:26+00:00 Subject: [ruby-core:120065] [Ruby master Bug#20904] 3.4.0-preview2: Building miniruby.exe fails for mswin32 Issue #20904 has been updated by nobu (Nobuyoshi Nakada). jun66j5 (Jun Omae) wrote in #note-3: > Weird. I get the warning on the following environments: > > * Windows Server 2022 (10.0.20348) on GitHub Actions > - Visual Studio 2022 Developer Command Prompt v17.12.0 > - Windows SDK: 10.0.26100.0 > - See: > - x86: https://github.com/jun66j5/ruby-build/actions/runs/11993783074/job/33435109634#step:4:638 > - x64: https://github.com/jun66j5/ruby-build/actions/runs/11994220038/job/33436008633#step:4:1482 > * Windows 10 22H2 > - Visual Studio 2022 Developer Command Prompt v17.12.1 > - Windows SDK: 10.0.20348.0 Weird. Can you reproduce it locally? If so, what is shown by `nmake process.i && findstr "GetSystemTime" process.i`? > I noticed C4013 warnings for `_finitef` only for x86 by adding -w24013 flag at https://github.com/jun66j5/ruby-build/actions/runs/11993783074/job/33435109634#step:4:580: > > ``` > D:\a\ruby-build\ruby-build\ruby-3.4.0-preview2\vm_insnhelper.c(6432): warning C4013: '_finitef' undefined; assuming extern returning int > prism/static_literals.c(504): warning C4013: '_finitef' undefined; assuming extern returning int > prism/prism.c(4153): warning C4013: '_finitef' undefined; assuming extern returning int > ``` > > Checking ucrt/corecrt_math.h, the `_finitef` seems to be available for x64 but not x86. It is because https://github.com/ruby/prism/commit/4267161ca7. The latest MSVC seems to define `isinf` as a macro using `fpclassify`, and both seem conform to POSIX and C99. Older versions of MSVC did not full-support C99, so `isinf` might not support `float` argument. @kddnewton, for what version of MSVC is this needed? ---------------------------------------- Bug #20904: 3.4.0-preview2: Building miniruby.exe fails for mswin32 https://bugs.ruby-lang.org/issues/20904#change-110805 * Author: jun66j5 (Jun Omae) * Status: Feedback * Backport: 3.1: DONTNEED, 3.2: DONTNEED, 3.3: DONTNEED ---------------------------------------- I tried to build 3.4.0-preview2 with MSVC x86, however linking miniruby.exe failed with the following eror: ``` linking miniruby.exe Creating library miniruby.lib and object miniruby.exp win32.obj : error LNK2019: unresolved external symbol _GetSystemTimePreciseAsFileTime referenced in function _clock_gettime miniruby.exe : fatal error LNK1120: 1 unresolved externals ``` It doesn't fail with MSVC x64. Investigating it, Windows 8 is required after #20563 but `NTVER` is still `0x0600` in `win32/Makefile.sub`. I think it should be `0x0602`. Workaround is to invoke `win32\configure.bat` with `--with-ntver=0x0602`. Also, adding temporarily `-w24013` to `WARNFLAGS` in `win32/Makefile.sub`, the following warning is received. ``` compiling win32/win32.c win32.c win32/win32.c(4789): warning C4013: 'GetSystemTimePreciseAsFileTime' undefined; assuming extern returning int ``` -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/