diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7457333 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.o +*~ +*.a diff --git a/LICENSE b/LICENSE deleted file mode 100644 index befe9d8..0000000 --- a/LICENSE +++ /dev/null @@ -1,25 +0,0 @@ -Openlibm is licensed under the three clause "Modified BSD License", -with exceptions noted below: - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * The names of the contributors may not be used to endorse or promote - products derived from this software without specific prior written - permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..ad773a7 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,64 @@ +## OpenLIBM + +Openlibm is licensed under the MIT LICENSE. + + Copyright (c) 2011-12 Viral B. Shah. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +## Derived from FREEBSD MSUN + + Copyright 1992-2011 The FreeBSD Project. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + THIS SOFTWARE IS PROVIDED BY THE FREEBSD PROJECT ``AS IS'' AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FREEBSD PROJECT OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + The views and conclusions contained in the software and documentation + are those of the authors and should not be interpreted as representing + official policies, either expressed or implied, of the FreeBSD + Project. + +## Derived from FDLIBM + + Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + + Developed at SunPro, a Sun Microsystems, Inc. business. + Permission to use, copy, modify, and distribute this + software is freely granted, provided that this notice + is preserved. diff --git a/Make.inc b/Make.inc new file mode 100644 index 0000000..22c9085 --- /dev/null +++ b/Make.inc @@ -0,0 +1,30 @@ +CC=clang +CFLAGS=-O2 -fPIC -I. -I../include -I../ld128 -I../src -D__BSD_VISIBLE -Wno-implicit-function-declaration + +%.o: %.c + $(QUIET_CC)$(CC) $(CFLAGS) -c $< -o $@ + +clean: + rm -f *.o *~ + +# OS-specific stuff + +ifeq ($(OS), Linux) +SHLIB_EXT = so +endif + +ifeq ($(OS), Darwin) +SHLIB_EXT = dylib +endif + +# Colors for make + +CCCOLOR="\033[34m" +LINKCOLOR="\033[34;1m" +SRCCOLOR="\033[33m" +BINCOLOR="\033[37;1m" +MAKECOLOR="\033[32;1m" +ENDCOLOR="\033[0m" + +QUIET_CC = @printf ' %b %b\n' $(CCCOLOR)CC$(ENDCOLOR) $(SRCCOLOR)$@$(ENDCOLOR); +QUIET_LINK = @printf ' %b %b\n' $(LINKCOLOR)LINK$(ENDCOLOR) $(BINCOLOR)$@$(ENDCOLOR); diff --git a/Makefile b/Makefile index 996c6b4..cd96dd4 100644 --- a/Makefile +++ b/Makefile @@ -1,2 +1,11 @@ +include ./Make.inc + all: - $(MAKE) -C src + $(MAKE) -C src all + $(MAKE) -C ld128 all + $(QUIET_LINK)ar -rcs libopenlibm.a src/*.o ld128/*.o + $(QUIET_LINK)$(CC) -shared -fPIC src/*.o ld128/*.o -o libopenlibm.$(SHLIB_EXT) + +cleanall: + $(MAKE) -C src clean + $(MAKE) -C ld128 clean \ No newline at end of file diff --git a/README b/README deleted file mode 100644 index 2e27dbd..0000000 --- a/README +++ /dev/null @@ -1,7 +0,0 @@ -Openlibm is an effort to have a high quality independent -libm library. It is meant to be used standalone in applications and -programming language implementations, and perhaps even as a reference -for libm implementations in OSes. - -The Openlibm code derives from the FreeBSD 8.2 msun implementation, -which in turn derives from FDLIBM 5.3. diff --git a/README.md b/README.md new file mode 100644 index 0000000..762ae57 --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +OpenLIBM is an effort to have a high quality independent LIBM +library. It is meant to be used standalone in applications and +programming language implementations, and perhaps even as a reference +for LIBM implementations in OSes. + +The OpenLIBM code derives from the FreeBSD msun implementation, which +in turn derives from FDLIBM 5.3. diff --git a/ld128/Makefile b/ld128/Makefile new file mode 100644 index 0000000..56600e3 --- /dev/null +++ b/ld128/Makefile @@ -0,0 +1,5 @@ +include ../Make.inc + +SRCS= invtrig.o k_cosl.o k_sinl.o k_tanl.o # s_exp2l.o s_nanl.o + +all: $(SRCS) diff --git a/src/Makefile b/src/Makefile index 71d853d..a576a91 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,21 +1,6 @@ -# @(#)Makefile 5.1beta 93/09/24 -# $FreeBSD: src/lib/msun/Makefile,v 1.112 2011/10/21 06:27:56 das Exp $ -# -# ==================================================== -# Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. -# -# Developed at SunPro, a Sun Microsystems, Inc. business. -# Permission to use, copy, modify, and distribute this -# software is freely granted, provided that this notice -# is preserved. -# ==================================================== -# -# +include ../Make.inc -CC=clang -CFLAGS=-O2 -I. -I../include -I../ld128 -D__BSD_VISIBLE -Wno-implicit-function-declaration - -COMMON_SRCS= \ +SRCS= \ e_acos.o e_acosf.o e_acosh.o e_acoshf.o e_asin.o e_asinf.o \ e_atan2.o e_atan2f.o e_atanh.o e_atanhf.o e_cosh.o e_coshf.o e_exp.o \ e_expf.o e_fmod.o e_fmodf.o e_gamma.o e_gamma_r.o e_gammaf.o \ @@ -49,10 +34,10 @@ COMMON_SRCS= \ w_cabs.o w_cabsf.o w_drem.o w_dremf.o # C99 long double functions -COMMON_SRCS+= s_copysignl.o s_fabsl.o s_llrintl.o s_lrintl.o s_modfl.o +SRCS+= s_copysignl.o s_fabsl.o s_llrintl.o s_lrintl.o s_modfl.o # If long double != double use these; otherwise, we alias the double versions. -COMMON_SRCS+= e_acosl.o e_asinl.o e_atan2l.o e_fmodl.o \ +SRCS+= e_acosl.o e_asinl.o e_atan2l.o e_fmodl.o \ e_hypotl.o e_remainderl.o e_sqrtl.o \ s_atanl.o s_cbrtl.o s_ceill.o s_cosl.o s_cprojl.o \ s_csqrtl.o s_floorl.o s_fmal.o \ @@ -61,36 +46,17 @@ COMMON_SRCS+= e_acosl.o e_asinl.o e_atan2l.o e_fmodl.o \ s_sinl.o s_tanl.o s_truncl.o w_cabsl.o # C99 complex functions -COMMON_SRCS+= s_ccosh.o s_ccoshf.o s_cexp.o s_cexpf.o \ +SRCS+= s_ccosh.o s_ccoshf.o s_cexp.o s_cexpf.o \ s_cimag.o s_cimagf.o s_cimagl.o \ s_conj.o s_conjf.o s_conjl.o \ s_cproj.o s_cprojf.o s_creal.o s_crealf.o s_creall.o \ s_csinh.o s_csinhf.o s_ctanh.o s_ctanhf.o # FreeBSD's C library supplies these functions. Need to build them in openlibm. -#COMMON_SRCS+= s_fabs.o s_frexp.o s_isnan.o s_ldexp.o s_modf.o +#SRCS+= s_fabs.o s_frexp.o s_isnan.o s_ldexp.o s_modf.o # These do not yet compile -#COMMON_SRCS+= b_exp.o b_log.o b_tgamma.o invtrig.o fenv.o k_cosl.o k_sinl.o k_tanl.o \ - s_exp2l.o s_nanl.o s_isnan.o s_scalbnf.o s_nextafterl.o s_rintl.o s_scalbnl.o \ +#SRCS+= b_exp.o b_log.o b_tgamma.o fenv.o s_isnan.o \ + s_exp2l.o s_nanl.o s_scalbnf.o s_nextafterl.o s_rintl.o s_scalbnl.o \ -# Colors for make - -CCCOLOR="\033[34m" -LINKCOLOR="\033[34;1m" -SRCCOLOR="\033[33m" -BINCOLOR="\033[37;1m" -MAKECOLOR="\033[32;1m" -ENDCOLOR="\033[0m" - -QUIET_CC = @printf ' %b %b\n' $(CCCOLOR)CC$(ENDCOLOR) $(SRCCOLOR)$@$(ENDCOLOR); -QUIET_LINK = @printf ' %b %b\n' $(LINKCOLOR)LINK$(ENDCOLOR) $(BINCOLOR)$@$(ENDCOLOR); - -all: $(COMMON_SRCS) - $(QUIET_LINK)$(CC) *.o -o libopenlibm.a - -%.o: %.c - $(QUIET_CC)$(CC) $(CFLAGS) -c $< -o $@ - -clean: - rm -f *.o *~ +all: $(SRCS)