OpenLibm é um esforço para ter uma biblioteca matemática C autônoma, portátil e de alta qualidade ( libm
). Ele pode ser usado de forma independente em aplicativos e implementações de linguagens de programação.
O projeto nasceu da necessidade de ter uma boa libm
para a linguagem de programação Julia que funcionasse de forma consistente em compiladores e sistemas operacionais e em ambientes de 32 e 64 bits.
OpenLibm é baseado em Linux, macOS, Windows, FreeBSD, OpenBSD, NetBSD e DragonFly BSD. Ele é construído com GCC e clang. Embora amplamente testado e amplamente utilizado nas arquiteturas x86 e x86-64, OpenLibm também suporta arm, aarch64, ppc64le, mips, wasm32, riscv, s390(x) e loongarch64.
make
na maioria dos sistemas, mas gmake
nos BSDs.make USEGCC=1
para construir com GCC. Este é o padrão no Linux e no Windows.make USECLANG=1
para construir com clang. Este é o padrão no OS X, FreeBSD e OpenBSD.make ARCH=wasm32
para construir a biblioteca wasm32 com clang.make ARCH=i386
para forçar uma compilação para i386. Outras arquiteturas suportadas são i486, i586 e i686. GCC 4.8 é o requisito mínimo para codegen correto em arquiteturas mais antigas de 32 bits. Construção cruzada Tome riscv64
como exemplo:
qemu-riscv64-static
, gcc-riscv64-linux-gnu
ARCH=riscv64
TRIPLE= $ARCH -linux-gnu
make ARCH= $ARCH TOOLPREFIX= $TRIPLE - -j
make -C test ARCH= $ARCH TOOLPREFIX= $TRIPLE - -j
qemu- $ARCH -static -L . -L /usr/ $TRIPLE / test/test-float
qemu- $ARCH -static -L . -L /usr/ $TRIPLE / test/test-double
mkdir build
e navegue até ele com cd build
.cmake /path/to/openlibm/
ou gerar o projeto com o sistema de compilação de sua escolha, por exemplo, cmake /path/to/openlib/ -G "MinGW Makefiles"
.cmake --build .
.A configuração padrão do CMake cria uma biblioteca compartilhada, que pode ser facilmente configurada usando a opção de configuração BUILD_SHARED_LIBS.
O suporte PowerPC para openlibm foi gentilmente patrocinado pela IBM.