We are using this repo to build wheels for symengine.py. Instead of using the multibuild infrastructure, we are using conda-forge infrastructure because of few reasons
- Dependencies like LLVM which take a lot of time are pre-built.
- cross-compiling is supported.
In order to use conda-forge built dependencies, there are a few catches due to the use of recent libgcc and libsdtcxx. In order to do that, we need to do the following for Linux,
- If C shared libraries are used, they need to be built with
-static-libgcc
or cross our fingers that they don't need a newer version of libgcc. (We checked and they didn't) Else use static libraries. - Use only static libraries for C++ dependencies.
- Build the wrapper with
-static-libgcc -static-libstdcxx
For macOS we need to do the following,
- Use only static libraries for C++ dependencies.
- Link in libc++ statically or hope that the dependencies don't use newer features of libc++. (We checked and they didn't)
For Windows,
- Hope that the user has install Visual C++ 2017 Redistributable.