diff options
Diffstat (limited to 'libm/Makefile.in')
| -rw-r--r-- | libm/Makefile.in | 279 |
1 files changed, 220 insertions, 59 deletions
diff --git a/libm/Makefile.in b/libm/Makefile.in index f3768d38e..835e7bf3f 100644 --- a/libm/Makefile.in +++ b/libm/Makefile.in @@ -1,6 +1,6 @@ # Makefile for uClibc # -# Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org> +# Copyright (C) 2000-2008 Erik Andersen <andersen@uclibc.org> # # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. # @@ -20,9 +20,11 @@ # by Erik Andersen <andersen@codepoet.org> # +subdirs += libm libm/$(TARGET_ARCH) + CFLAGS-libm := -DNOT_IN_libc -DIS_IN_libm $(SSP_ALL_CFLAGS) -CFLAGS-libm += -D_IEEE_LIBM +LDFLAGS-$(UCLIBC_FORMAT_DSBT_ELF)-libm.so := -Wl,--dsbt-index=5 LDFLAGS-libm.so := $(LDFLAGS) LIBS-libm.so := $(LIBS) @@ -32,86 +34,222 @@ libm_FULL_NAME := libm-$(VERSION).so libm_DIR:=$(top_srcdir)libm libm_OUT:=$(top_builddir)libm -# Fix builds for powerpc as there are different cores in this -# section now.` -ifeq ($(TARGET_ARCH),powerpc) -ifeq ($(CONFIG_E500),y) -libm_ARCH_DIR:=$(libm_DIR)/$(TARGET_ARCH)/e500 -libm_ARCH_OUT:=$(libm_OUT)/$(TARGET_ARCH)/e500 -else -libm_ARCH_DIR:=$(libm_DIR)/$(TARGET_ARCH)/classic -libm_ARCH_OUT:=$(libm_OUT)/$(TARGET_ARCH)/classic -endif -else libm_ARCH_DIR:=$(libm_DIR)/$(TARGET_ARCH) libm_ARCH_OUT:=$(libm_OUT)/$(TARGET_ARCH) -endif -libm_ARCH_fpu_DIR:=$(libm_ARCH_DIR)/fpu -libm_ARCH_fpu_OUT:=$(libm_ARCH_OUT)/fpu +ifneq ($(TARGET_SUBARCH),) +libm_SUBARCH_DIR:=$(libm_DIR)/$(TARGET_ARCH)/$(TARGET_SUBARCH) +libm_SUBARCH_OUT:=$(libm_OUT)/$(TARGET_ARCH)/$(TARGET_SUBARCH) +endif ifeq ($(UCLIBC_HAS_FPU),y) ifeq ($(DO_C99_MATH),y) -include $(libm_ARCH_DIR)/Makefile.arch +-include $(libm_SUBARCH_DIR)/Makefile.arch endif endif FL_MSRC := float_wrappers.c +LD_MSRC := ldouble_wrappers.c ifeq ($(DO_C99_MATH),y) libm_CSRC := \ e_acos.c e_acosh.c e_asin.c e_atan2.c e_atanh.c e_cosh.c \ - e_exp.c e_fmod.c e_gamma.c e_gamma_r.c e_hypot.c e_j0.c \ - e_j1.c e_jn.c e_lgamma.c e_lgamma_r.c e_log.c e_log10.c \ + e_exp.c e_exp10.c e_fmod.c e_hypot.c \ + e_lgamma_r.c e_log.c e_log2.c e_log10.c \ e_pow.c e_remainder.c e_rem_pio2.c e_scalb.c e_sinh.c \ - e_sqrt.c k_cos.c k_rem_pio2.c k_sin.c k_standard.c k_tan.c \ + e_sqrt.c k_cos.c k_rem_pio2.c k_sin.c k_tan.c \ s_asinh.c s_atan.c s_cbrt.c s_ceil.c s_copysign.c s_cos.c \ s_erf.c s_expm1.c s_fabs.c s_finite.c s_floor.c s_frexp.c \ s_ilogb.c s_ldexp.c s_lib_version.c s_lrint.c s_lround.c s_llround.c \ - s_log1p.c s_logb.c s_matherr.c s_modf.c s_nextafter.c s_round.c \ + s_log1p.c s_logb.c s_modf.c s_nextafter.c \ + s_nextafterf.c s_round.c \ s_rint.c s_scalbn.c s_signgam.c s_significand.c s_sin.c s_tan.c \ - s_tanh.c s_trunc.c w_acos.c w_acosh.c w_asin.c w_atan2.c w_atanh.c \ - w_cabs.c w_cosh.c w_drem.c w_exp.c w_fmod.c w_gamma.c w_gamma_r.c \ - w_hypot.c w_j0.c w_j1.c w_jn.c w_lgamma.c w_lgamma_r.c \ - w_log.c w_log10.c w_pow.c w_remainder.c w_scalb.c w_sinh.c \ - w_sqrt.c fpmacros.c nan.c carg.c s_llrint.c + s_tanh.c s_trunc.c \ + w_cabs.c \ + nan.c carg.c s_llrint.c \ + s_fpclassify.c s_fpclassifyf.c s_signbit.c s_signbitf.c \ + s_isnan.c s_isnanf.c s_isinf.c s_isinff.c s_finitef.c \ + s_fdim.c s_fma.c s_fmax.c s_fmin.c \ + s_remquo.c w_exp2.c \ + cexp.c sincos.c + FL_MOBJ := \ - acosf.o acoshf.o asinf.o asinhf.o atan2f.o atanf.o atanhf.o cbrtf.o \ - ceilf.o copysignf.o cosf.o coshf.o erfcf.o erff.o exp2f.o expf.o \ - expm1f.o fabsf.o fdimf.o floorf.o fmaf.o fmaxf.o fminf.o fmodf.o \ - frexpf.o hypotf.o ilogbf.o ldexpf.o lgammaf.o llroundf.o log10f.o \ - log1pf.o log2f.o logbf.o logf.o lrintf.o lroundf.o modff.o nearbyintf.o \ - nextafterf.o powf.o remainderf.o remquof.o rintf.o roundf.o \ - scalblnf.o scalbnf.o sinf.o sinhf.o sqrtf.o tanf.o tanhf.o \ - tgammaf.o truncf.o cargf.o llrintf.o + acosf.o \ + acoshf.o \ + asinf.o \ + asinhf.o \ + atan2f.o \ + atanf.o \ + atanhf.o \ + cargf.o \ + cbrtf.o \ + ceilf.o \ + copysignf.o \ + cosf.o \ + coshf.o \ + erfcf.o \ + erff.o \ + exp2f.o \ + expf.o \ + expm1f.o \ + fabsf.o \ + fdimf.o \ + floorf.o \ + fmaf.o \ + fmaxf.o \ + fminf.o \ + fmodf.o \ + frexpf.o \ + gammaf.o \ + hypotf.o \ + ilogbf.o \ + ldexpf.o \ + lgammaf.o \ + llrintf.o \ + llroundf.o \ + log10f.o \ + log1pf.o \ + log2f.o \ + logbf.o \ + logf.o \ + lrintf.o \ + lroundf.o \ + modff.o \ + nearbyintf.o \ + nexttowardf.o \ + powf.o \ + remainderf.o \ + remquof.o \ + rintf.o \ + roundf.o \ + scalblnf.o \ + scalbnf.o \ + significandf.o \ + sinf.o \ + sinhf.o \ + sqrtf.o \ + tanf.o \ + tanhf.o \ + tgammaf.o \ + truncf.o \ + +ifeq ($(UCLIBC_SUSV3_LEGACY),y) +FL_MOBJ += scalbf.o +endif + +# Do not (yet?) implement the float variants of bessel functions +ifeq (not-yet-implemented-$(DO_XSI_MATH),y) +FL_MOBJ += \ + j0f.o \ + j1f.o \ + jnf.o \ + y0f.o \ + y1f.o \ + ynf.o +endif + +LD_MOBJ := \ + __finitel.o \ + __fpclassifyl.o \ + __isinfl.o \ + __isnanl.o \ + __signbitl.o \ + acoshl.o \ + acosl.o \ + asinhl.o \ + asinl.o \ + atan2l.o \ + atanhl.o \ + atanl.o \ + cargl.o \ + cbrtl.o \ + ceill.o \ + copysignl.o \ + coshl.o \ + cosl.o \ + erfcl.o \ + erfl.o \ + exp2l.o \ + expl.o \ + expm1l.o \ + fabsl.o \ + fdiml.o \ + floorl.o \ + fmal.o \ + fmaxl.o \ + fminl.o \ + fmodl.o \ + frexpl.o \ + gammal.o \ + hypotl.o \ + ilogbl.o \ + ldexpl.o \ + lgammal.o \ + llrintl.o \ + llroundl.o \ + log10l.o \ + log1pl.o \ + log2l.o \ + logbl.o \ + logl.o \ + lrintl.o \ + lroundl.o \ + modfl.o \ + nearbyintl.o \ + nextafterl.o \ + nexttowardl.o \ + powl.o \ + remainderl.o \ + remquol.o \ + rintl.o \ + roundl.o \ + scalblnl.o \ + scalbnl.o \ + significandl.o \ + sinhl.o \ + sinl.o \ + sqrtl.o \ + tanhl.o \ + tanl.o \ + tgammal.o \ + truncl.o \ + +# Do not (yet?) implement the long double variants of bessel functions +ifeq (not-yet-implemented-$(DO_XSI_MATH),y) +LD_MOBJ += \ + j0l.o \ + j1l.o \ + jnl.o \ + y0l.o \ + y1l.o \ + ynl.o +endif + else + # This list of math functions was taken from POSIX/IEEE 1003.1b-1993 libm_CSRC := \ - w_acos.c w_asin.c s_atan.c w_atan2.c s_ceil.c s_cos.c \ - w_cosh.c w_exp.c s_fabs.c s_floor.c w_fmod.c s_frexp.c \ - s_ldexp.c w_log.c w_log10.c s_modf.c w_pow.c s_sin.c \ - w_sinh.c w_sqrt.c s_tan.c s_tanh.c \ + s_atan.c s_ceil.c s_cos.c \ + s_fabs.c s_floor.c s_frexp.c \ + s_ldexp.c s_modf.c s_sin.c \ + s_tan.c s_tanh.c \ s_expm1.c s_scalbn.c s_copysign.c e_acos.c e_asin.c e_atan2.c \ k_cos.c e_cosh.c e_exp.c e_fmod.c e_log.c e_log10.c e_pow.c \ k_sin.c e_sinh.c e_sqrt.c k_tan.c e_rem_pio2.c k_rem_pio2.c \ - s_finite.c + s_finite.c e_exp10.c # We'll add sqrtf to avoid problems with libstdc++ FL_MOBJ := sqrtf.o endif +ifeq ($(DO_XSI_MATH),y) +libm_CSRC += e_j0.c e_j1.c e_jn.c +endif + # assume that arch specific versions are provided as single sources/objects ifeq ($(UCLIBC_HAS_FPU),y) ifeq ($(DO_C99_MATH),y) ifneq ($(strip $(libm_ARCH_OBJS)),) -ifeq ($(TARGET_ARCH),powerpc) -ifeq ($(CONFIG_E500),y) -CFLAGS-libm/$(TARGET_ARCH)/e500/ := $(CFLAGS-libm) -else -CFLAGS-libm/$(TARGET_ARCH)/classic/ := $(CFLAGS-libm) -endif -else -CFLAGS-libm/$(TARGET_ARCH)/ := $(CFLAGS-libm) -endif # remove generic sources, if arch specific version is present ifneq ($(strip $(libm_ARCH_SRC)),) @@ -120,9 +258,11 @@ endif # remove generic objects built from multi-sources, if arch specific version is present FL_MOBJ := $(filter-out $(notdir $(libm_ARCH_OBJS)),$(FL_MOBJ)) +LD_MOBJ := $(filter-out $(notdir $(libm_ARCH_OBJS)),$(LD_MOBJ)) # we also try to remove % if s_% is in arch specific subdir FL_MOBJ := $(filter-out $(patsubst s_%.o,%.o,$(notdir $(libm_ARCH_OBJS))),$(FL_MOBJ)) +LD_MOBJ := $(filter-out $(patsubst s_%.o,%.o,$(notdir $(libm_ARCH_OBJS))),$(LD_MOBJ)) endif endif endif @@ -130,14 +270,22 @@ endif libm_SRC := $(patsubst %.c,$(libm_DIR)/%.c,$(libm_CSRC)) libm_OBJ := $(patsubst $(libm_DIR)/%.c,$(libm_OUT)/%.o,$(libm_SRC)) -libm_MSRC := $(libm_DIR)/$(FL_MSRC) -libm_MOBJ := $(patsubst %.o,$(libm_OUT)/%.o,$(FL_MOBJ)) +ifeq ($(strip $(UCLIBC_HAS_LONG_DOUBLE_MATH)),y) +libm_MSRC_LD := $(libm_DIR)/$(LD_MSRC) +libm_MOBJ_LD := $(patsubst %.o,$(libm_OUT)/%.o,$(LD_MOBJ)) +endif +libm_MSRC_FL := $(libm_DIR)/$(FL_MSRC) +libm_MOBJ_FL := $(patsubst %.o,$(libm_OUT)/%.o,$(FL_MOBJ)) + ifneq ($(DOMULTI),n) -CFLAGS-libm += $(patsubst %,-DL_%,$(subst .o,,$(notdir $(libm_MOBJ)))) +CFLAGS-libm += $(patsubst %,-DL_%,$(subst .o,,$(notdir $(libm_MOBJ_FL)))) +ifeq ($(strip $(UCLIBC_HAS_LONG_DOUBLE_MATH)),y) +CFLAGS-libm += $(patsubst %,-DL_%,$(subst .o,,$(notdir $(libm_MOBJ_LD)))) +endif endif -libm_OBJS := $(libm_OBJ) $(libm_MOBJ) +libm_OBJS := $(libm_OBJ) $(libm_MOBJ_FL) $(libm_MOBJ_LD) ifeq ($(DOPIC),y) libm-a-y += $(libm_OBJS:.o=.os) @@ -148,7 +296,7 @@ libm-so-y += $(libm_OBJS:.o=.os) lib-a-$(UCLIBC_HAS_FLOATS) += $(top_builddir)lib/libm.a lib-so-$(UCLIBC_HAS_FLOATS) += $(top_builddir)lib/libm.so -objclean-y += libm_clean +objclean-y += CLEAN_libm ifeq ($(DOMULTI),n) ifeq ($(DOPIC),y) @@ -156,17 +304,17 @@ $(top_builddir)lib/libm.so: $(top_builddir)lib/libm.a $(libc.depend) else $(top_builddir)lib/libm.so: $(libm_OUT)/libm_so.a $(libc.depend) endif - $(call link.so,$(libm_FULL_NAME),$(MAJOR_VERSION)) + $(call link.so,$(libm_FULL_NAME),$(ABI_VERSION)) else $(top_builddir)lib/libm.so: $(libm_OUT)/libm.oS | $(libc.depend) - $(call linkm.so,$(libm_FULL_NAME),$(MAJOR_VERSION)) + $(call linkm.so,$(libm_FULL_NAME),$(ABI_VERSION)) endif $(libm_OUT)/libm_so.a: $(libm-so-y) $(Q)$(RM) $@ $(do_ar) -$(libm_OUT)/libm.oS: $(libm_SRC) $(libm_MSRC) $(libm_ARCH_SRC) +$(libm_OUT)/libm.oS: $(libm_SRC) $(libm_MSRC_FL) $(libm_MSRC_LD) $(libm_ARCH_SRC) $(Q)$(RM) $@ $(compile-m) @@ -175,11 +323,24 @@ $(top_builddir)lib/libm.a: $(libm-a-y) $(Q)$(RM) $@ $(do_ar) -$(libm_MOBJ): $(libm_MSRC) +$(libm_MOBJ_FL): $(libm_MSRC_FL) + $(compile.m) + +$(libm_MOBJ_LD): $(libm_MSRC_LD) $(compile.m) -$(libm_MOBJ:.o=.os): $(libm_MSRC) +$(libm_MOBJ_FL:.o=.os): $(libm_MSRC_FL) $(compile.m) -libm_clean: - $(RM) $(libm_OUT)/{,*/,*/*/}*.{o,os,oS,a} +$(libm_MOBJ_LD:.o=.os): $(libm_MSRC_LD) + $(compile.m) + +# spare us from adding a gazillion dummy two-liner files +$(libm_MOBJ_FL:.o=.i): $(libm_MSRC_FL) + $(compile.mi) + +$(libm_MOBJ_LD:.o=.i): $(libm_MSRC_LD) + $(compile.mi) + +CLEAN_libm: + $(do_rm) $(addprefix $(libm_OUT)/,$(foreach e, o os oS a,$(foreach d, *. */*. */*/*.,$(d)$(e)))) |
