-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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
trunc
andrint
(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.