OpenLibm est un effort pour disposer d'une bibliothèque mathématique C ( libm
) portable et autonome de haute qualité. Il peut être utilisé de manière autonome dans les applications et les implémentations de langages de programmation.
Le projet est né du besoin de disposer d'une bonne libm
pour le langage de programmation Julia qui fonctionne de manière cohérente sur tous les compilateurs et systèmes d'exploitation, ainsi que dans les environnements 32 bits et 64 bits.
OpenLibm s'appuie sur Linux, macOS, Windows, FreeBSD, OpenBSD, NetBSD et DragonFly BSD. Il s'appuie à la fois sur GCC et Clang. Bien que largement testé et largement utilisé sur les architectures x86 et x86-64, OpenLibm prend également en charge arm, aarch64, ppc64le, mips, wasm32, riscv, s390(x) et loongarch64.
make
sur la plupart des systèmes, mais gmake
sur les BSD.make USEGCC=1
pour construire avec GCC. C'est la valeur par défaut sous Linux et Windows.make USECLANG=1
pour construire avec clang. C'est la valeur par défaut sur OS X, FreeBSD et OpenBSD.make ARCH=wasm32
pour créer la bibliothèque wasm32 avec clang.make ARCH=i386
pour forcer une build pour i386. Les autres architectures prises en charge sont i486, i586 et i686. GCC 4.8 est la configuration minimale requise pour un codegen correct sur les anciennes architectures 32 bits. Cross Build Prenons riscv64
comme exemple :
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
et accédez-y avec cd build
.cmake /path/to/openlibm/
ou générer un projet avec le système de build de votre choix, par exemple cmake /path/to/openlib/ -G "MinGW Makefiles"
.cmake --build .
.La configuration CMake par défaut crée une bibliothèque partagée, celle-ci peut facilement être configurée à l'aide de l'option de configuration BUILD_SHARED_LIBS.
Le support PowerPC pour openlibm a été gracieusement sponsorisé par IBM.