OpenLibm es un esfuerzo por tener una biblioteca matemática C ( libm ), portátil e independiente de alta calidad. Se puede utilizar de forma independiente en aplicaciones e implementaciones de lenguajes de programación.
El proyecto nació de la necesidad de tener una buena libm para el lenguaje de programación Julia que funcionara de manera consistente en todos los compiladores y sistemas operativos, y en entornos de 32 y 64 bits.
OpenLibm se basa en Linux, macOS, Windows, FreeBSD, OpenBSD, NetBSD y DragonFly BSD. Se construye tanto con GCC como con clang. Aunque ampliamente probado y utilizado en las arquitecturas x86 y x86-64, OpenLibm también admite arm, aarch64, ppc64le, mips, wasm32, riscv, s390(x) y loongarch64.
make en la mayoría de los sistemas, pero gmake en BSD.make USEGCC=1 para compilar con GCC. Este es el valor predeterminado en Linux y Windows.make USECLANG=1 para compilar con clang. Este es el valor predeterminado en OS X, FreeBSD y OpenBSD.make ARCH=wasm32 para crear la biblioteca wasm32 con clang.make ARCH=i386 para forzar una compilación para i386. Otras arquitecturas compatibles son i486, i586 e i686. GCC 4.8 es el requisito mínimo para una generación de código correcta en arquitecturas antiguas de 32 bits. Construcción cruzada Tome riscv64 como ejemplo:
qemu-riscv64-static , gcc-riscv64-linux-gnuARCH=riscv64
TRIPLE= $ARCH -linux-gnu
make ARCH= $ARCH TOOLPREFIX= $TRIPLE - -j
make -C test ARCH= $ARCH TOOLPREFIX= $TRIPLE - -jqemu- $ARCH -static -L . -L /usr/ $TRIPLE / test/test-float
qemu- $ARCH -static -L . -L /usr/ $TRIPLE / test/test-doublemkdir build y navegue hasta él con cd build .cmake /path/to/openlibm/ o genere un proyecto con el sistema de compilación de su elección, por ejemplo cmake /path/to/openlib/ -G "MinGW Makefiles" .cmake --build . .La configuración predeterminada de CMake crea una biblioteca compartida, esto se puede configurar fácilmente usando la opción de configuración BUILD_SHARED_LIBS.
El soporte de PowerPC para openlibm fue gentilmente patrocinado por IBM.