Add openlibm to sysimg link line on windows#53672
Conversation
LLVM generates calls to math intrinsics like `trunc` and `rint` (at least in my local i686 mingw) build, so linking to openlibm is required. We already have this on the sysimg link line in `Base.link_image`, so this aligns those options.
vtjnash
left a comment
There was a problem hiding this comment.
I thought this was supposed to come from Make.inc (OSLIBS or some variable specific to openlibm--I forget which) since the user might have wanted to override the default build options for it
|
We define |
|
I suspect modern libms on most 64-bit platforms are actually better than openlibm. |
|
I thought we (almost) got rid of [open]libm dependency, i.e. could for all platforms except win32. I.e. for Julia itself. Does this mean it's though needed for LLVM, and only then? And only for trunc and rint, and maybe very few other? Does this mean dynamically linking to openlib, then bundling/bloating with it, or statically, and only few functions could (theoretically) be provided, i.e. a cut-down libm, if the compiler doesn't actually take care of dead-code-eliminating? What modern libms did you have in mind (for Windows)?
Why? Is it about possibly non-existent or old/inferior? On Windows at least, isn't it always there (and actually part of libc, as on Android?). And always there on macOS, and all Linux/Unix-like sane platforms? And at least those functions available, non-buggy, and fast enough? I see what's provided: Only actually first (1 or) 2 needed, plus actually more for BigFloat (already covered elsewhere), though not for LLVM... |
|
Should we merge for now? |
|
It seems good, just rather suspicious that we would hard code it like this, rather than use a Make variable such as |
LLVM generates calls to math intrinsics like `trunc` and `rint` (at least in my local i686 mingw) build, so linking to openlibm is required. We already have this on the sysimg link line in `Base.link_image`, so this aligns those options. --------- Co-authored-by: Elliot Saba <staticfloat@gmail.com> (cherry picked from commit 320366b)
LLVM generates calls to math intrinsics like `trunc` and `rint` (at least in my local i686 mingw) build, so linking to openlibm is required. We already have this on the sysimg link line in `Base.link_image`, so this aligns those options. --------- Co-authored-by: Elliot Saba <staticfloat@gmail.com> (cherry picked from commit 320366b)
LLVM generates calls to math intrinsics like
truncandrint(at least in my local i686 mingw) build, so linking to openlibm is required. We already have this on the sysimg link line inBase.link_image, so this aligns those options.