[ruby-core:119999] [Ruby master Bug#20904] 3.4.0-preview2: Building miniruby.exe fails for mswin32
From:
"jun66j5 (Jun Omae) via ruby-core" <ruby-core@...>
Date:
2024-11-24 08:26:08 UTC
List:
ruby-core #119999
Issue #20904 has been updated by jun66j5 (Jun Omae).
nobu (Nobuyoshi Nakada) wrote in #note-1:
> jun66j5 (Jun Omae) wrote:
> > 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`.
>
> Thank you, fixed it by commit:80cfa57234255667a86d46096093099349a7262a.
Thanks for the fix!
> > 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
> > ```
>
> I can't reproduce it with:
> * Visual Studio 2022 Developer Command Prompt v17.12.0
> * Windows 11 SDK Version 10.0.26100.0
> * Windows 11 [Version 10.0.26100.2314]
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
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.
----------------------------------------
Bug #20904: 3.4.0-preview2: Building miniruby.exe fails for mswin32
https://bugs.ruby-lang.org/issues/20904#change-110743
* 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/