* add msys2 ci job
* run CI on any branch
* install base-devel on msys2
* remove soname and nodefaultlibs flags from mingw
* avoid soname on Windows
* add OLM_DLLEXPORT to signgam
it needs to be exported from the DLL also
* define IMPORT_EXPORTS on WINNT
While there are function export thunks in the import library that allow the linker to do the right thing for functions even if this is not set, it is required for the linker to do the right thing with variables being imported from a DLL (namely, signgam)
* add OLM_DLLEXPORT to openlibm_fenv_i387.h
seems this whole header was overlooked
* Update openlibm_fenv_i387.h
include openlibm_defs.h for OLM_DLLEXPORT
The implementation of `fesetenv` cannot be portable, as the value of
`FE_DFL_ENV` differs between platforms. On FreeBSD, it is a actual
environment. With glibc however, it's a sentinel -1 handled in the
implementation of its floating point functions.
With openlibm based on FreeBSD's libm, it assumes `FE_DFL_ENV` to be an
actual environment. That assumption breaks using code that was compiled
against glibc, e.g., `libcuda`:
```
Thread 1 "julia-debug" received signal SIGSEGV, Segmentation fault.
0x00007ffff7b855d0 in fesetenv () from /home/tim/Julia/julia/build/release/usr/bin/../lib/libopenlibm.so
(gdb) bt
```
This reverts commit 5a27b4c0c0.
Fixes https://github.com/JuliaLang/julia/issues/38427.
My previous Apple Silicon build went through, so I thought it already
worked, but it turns out it accidentally built an armv7 build instead.
This actually fixes the Apple Silicon build. One thing to note in
particular is that on Apple Silicong `long double` is the same as
`double` while on Linux `long double` is a 128 bit double-double
format.
Co-authored-by: Elliot Saba <staticfloat@gmail.com>
Win32 has been using a hack to switch the `fenv` functions from `static`
to `DLLEXPORT`, we apply that hack to all platforms that do not use a
host `fenv.h`.