1# $NetBSD: Makefile,v 1.20 2020/05/15 14:44:05 joerg Exp $ 2 3.include <bsd.init.mk> 4 5# We don't install mpfr, just provide it for GCC. 6LIBISPRIVATE?= yes 7 8.if ${LIBISPRIVATE} != "yes" 9INCS= mpf2mpfr.h mpfr.h 10INCSDIR= /usr/include 11.endif 12 13# XXX get_d.c triggers lint div zero errors (which is valid?) 14MKLINT=no 15 16LIB= mpfr 17 18LIBDPLIBS+= gmp ${.CURDIR}/../../../gmp/lib/libgmp 19 20SRCS= \ 21 abort_prec_max.c \ 22 acos.c \ 23 acosh.c \ 24 add.c \ 25 add1.c \ 26 add1sp.c \ 27 add_d.c \ 28 add_ui.c \ 29 agm.c \ 30 ai.c \ 31 asin.c \ 32 asinh.c \ 33 atan.c \ 34 atan2.c \ 35 atanh.c \ 36 bernoulli.c \ 37 beta.c \ 38 buildopt.c \ 39 cache.c \ 40 cbrt.c \ 41 check.c \ 42 clear.c \ 43 clears.c \ 44 cmp.c \ 45 cmp2.c \ 46 cmp_abs.c \ 47 cmp_d.c \ 48 cmp_ld.c \ 49 cmp_si.c \ 50 cmp_ui.c \ 51 comparisons.c \ 52 const_catalan.c \ 53 const_euler.c \ 54 const_log2.c \ 55 const_pi.c \ 56 constant.c \ 57 copysign.c \ 58 cos.c \ 59 cosh.c \ 60 cot.c \ 61 coth.c \ 62 csc.c \ 63 csch.c \ 64 d_div.c \ 65 d_sub.c \ 66 digamma.c \ 67 dim.c \ 68 div.c \ 69 div_2exp.c \ 70 div_2si.c \ 71 div_2ui.c \ 72 div_d.c \ 73 div_ui.c \ 74 dump.c \ 75 eint.c \ 76 eq.c \ 77 erf.c \ 78 erfc.c \ 79 exceptions.c \ 80 exp.c \ 81 exp10.c \ 82 exp2.c \ 83 exp3.c \ 84 exp_2.c \ 85 expm1.c \ 86 extract.c \ 87 factorial.c \ 88 fits_intmax.c \ 89 fits_sint.c \ 90 fits_slong.c \ 91 fits_sshort.c \ 92 fits_uint.c \ 93 fits_uintmax.c \ 94 fits_ulong.c \ 95 fits_ushort.c \ 96 fma.c \ 97 fmma.c \ 98 fms.c \ 99 fpif.c \ 100 frac.c \ 101 free_cache.c \ 102 frexp.c \ 103 gamma.c \ 104 gamma_inc.c \ 105 gammaonethird.c \ 106 get_d.c \ 107 get_d64.c \ 108 get_exp.c \ 109 get_f.c \ 110 get_flt.c \ 111 get_ld.c \ 112 get_patches.c \ 113 get_q.c \ 114 get_si.c \ 115 get_sj.c \ 116 get_str.c \ 117 get_ui.c \ 118 get_uj.c \ 119 get_z.c \ 120 get_z_exp.c \ 121 gmp_op.c \ 122 grandom.c \ 123 hypot.c \ 124 init.c \ 125 init2.c \ 126 inits.c \ 127 inits2.c \ 128 inp_str.c \ 129 int_ceil_log2.c \ 130 isinf.c \ 131 isinteger.c \ 132 isnan.c \ 133 isnum.c \ 134 isqrt.c \ 135 isregular.c \ 136 iszero.c \ 137 jn.c \ 138 li2.c \ 139 lngamma.c \ 140 log.c \ 141 log10.c \ 142 log1p.c \ 143 log2.c \ 144 log_ui.c \ 145 logging.c \ 146 min_prec.c \ 147 minmax.c \ 148 modf.c \ 149 mp_clz_tab.c \ 150 mpfr-gmp.c \ 151 mpn_exp.c \ 152 mul.c \ 153 mul_2exp.c \ 154 mul_2si.c \ 155 mul_2ui.c \ 156 mul_d.c \ 157 mul_ui.c \ 158 mulders.c \ 159 neg.c \ 160 next.c \ 161 nrandom.c \ 162 odd_p.c \ 163 out_str.c \ 164 pool.c \ 165 pow.c \ 166 pow_si.c \ 167 pow_ui.c \ 168 pow_z.c \ 169 powerof2.c \ 170 print_raw.c \ 171 print_rnd_mode.c \ 172 printf.c \ 173 random_deviate.c \ 174 rec_sqrt.c \ 175 reldiff.c \ 176 rem1.c \ 177 rint.c \ 178 rndna.c \ 179 root.c \ 180 round_near_x.c \ 181 round_p.c \ 182 round_prec.c \ 183 scale2.c \ 184 sec.c \ 185 sech.c \ 186 set.c \ 187 set_d.c \ 188 set_d64.c \ 189 set_dfl_prec.c \ 190 set_exp.c \ 191 set_f.c \ 192 set_float128.c \ 193 set_flt.c \ 194 set_inf.c \ 195 set_ld.c \ 196 set_nan.c \ 197 set_prc_raw.c \ 198 set_prec.c \ 199 set_q.c \ 200 set_rnd.c \ 201 set_si.c \ 202 set_si_2exp.c \ 203 set_sj.c \ 204 set_str.c \ 205 set_str_raw.c \ 206 set_ui.c \ 207 set_ui_2exp.c \ 208 set_uj.c \ 209 set_z.c \ 210 set_z_exp.c \ 211 set_zero.c \ 212 setmax.c \ 213 setmin.c \ 214 setsign.c \ 215 sgn.c \ 216 si_op.c \ 217 signbit.c \ 218 sin.c \ 219 sin_cos.c \ 220 sinh.c \ 221 sinh_cosh.c \ 222 sqr.c \ 223 sqrt.c \ 224 sqrt_ui.c \ 225 stack_interface.c \ 226 strtofr.c \ 227 sub.c \ 228 sub1.c \ 229 sub1sp.c \ 230 sub_d.c \ 231 sub_ui.c \ 232 subnormal.c \ 233 sum.c \ 234 swap.c \ 235 tan.c \ 236 tanh.c \ 237 ubf.c \ 238 uceil_exp2.c \ 239 uceil_log2.c \ 240 ufloor_log2.c \ 241 ui_div.c \ 242 ui_pow.c \ 243 ui_pow_ui.c \ 244 ui_sub.c \ 245 urandom.c \ 246 urandomb.c \ 247 vasprintf.c \ 248 version.c \ 249 volatile.c \ 250 yn.c \ 251 zeta.c \ 252 zeta_ui.c 253 254# not yet 255# float128.c 256 257CPPFLAGS+= -I. \ 258 -DHAVE_INTTYPES_H=1 \ 259 -DHAVE_STDINT_H=1 \ 260 -DTIME_WITH_SYS_TIME=1 \ 261 -DHAVE_LOCALE_H=1 \ 262 -DHAVE_WCHAR_H=1 \ 263 -DHAVE_STDARG=1 \ 264 -DHAVE_SYS_TIME_H=1 \ 265 -DHAVE_STDINT_H=1 \ 266 -DHAVE_VA_COPY=1 \ 267 -DHAVE_SETLOCALE=1 \ 268 -DHAVE_GETTIMEOFDAY=1 \ 269 -DHAVE_LONG_LONG=1 \ 270 -DHAVE_INTMAX_T=1 \ 271 -DMPFR_HAVE_INTMAX_MAX=1 \ 272 -DMPFR_HAVE_FESETROUND=1 \ 273 -DHAVE_DENORMS=1 \ 274 -DHAVE_ROUND=1 \ 275 -DHAVE_TRUNC=1 \ 276 -DHAVE_FLOOR=1 \ 277 -DHAVE_CEIL=1 \ 278 -DHAVE_ATTRIBUTE_MODE=1 279 280# Find <gmp.h> 281.include "../../../gmp/Makefile.arch" 282CPPFLAGS+= -I${NETBSDSRCDIR}/external/lgpl3/gmp/lib/libgmp/arch/${GMP_MACHINE_ARCH} 283CPPFLAGS+= -I${.CURDIR}/../../dist/src 284 285# IEEE FP support. No VAX here. 286.if ${MACHINE_ARCH} == "x86_64" || \ 287 ${MACHINE_ARCH} == "i386" 288 ${MACHINE_ARCH} == "mipsel" 289CPPFLAGS+= -DHAVE_LDOUBLE_IEEE_EXT_LITTLE=1 290.endif 291 292.if ${MACHINE_ARCH} == "mips64el" 293CPPFLAGS+= -DHAVE_LDOUBLE_IEEE_QUAD_LITTLE=1 294.endif 295 296.if ${MACHINE_ARCH} == "sparc64" || \ 297 ${MACHINE_ARCH} == "powerpc" || \ 298 ${MACHINE_ARCH} == "powerpc64" || \ 299 ${MACHINE_ARCH} == "mips64eb" 300CPPFLAGS+= -DHAVE_LDOUBLE_IEEE_QUAD_BIG=1 301.endif 302 303.include <bsd.endian.mk> 304 305.if ${TARGET_ENDIANNESS} == "1234" 306CPPFLAGS+= -DHAVE_DOUBLE_IEEE_LITTLE_ENDIAN=1 307CPPFLAGS+= -DHAVE_BIG_ENDIAN=1 308.elif ${TARGET_ENDIANNESS} == "4321" 309CPPFLAGS+= -DHAVE_DOUBLE_IEEE_BIG_ENDIAN=1 310CPPFLAGS+= -DHAVE_LITTLE_ENDIAN=1 311.endif 312 313CWARNFLAGS.clang+= -Wno-error=tautological-constant-out-of-range-compare 314 315WITHOUT_MAN= yes 316 317.include <bsd.lib.mk> 318 319mparam.h: mparam_h.in 320 rm -f ${.TARGET} && cp ${.ALLSRC} ${.TARGET} 321 322${SRCS}: mparam.h 323CLEANFILES+= mparam.h 324 325.PATH: ${.CURDIR}/../../dist/src 326 327.if !empty(MACHINE_ARCH:M*arm*) 328COPTS += -marm 329.endif 330.if ${MACHINE_ARCH} == "vax" 331COPTS.set_ld.c+= -Wno-error 332.endif 333 334# Don't warn about functions which cannot be stack smash protected as 335# there are a lot of them. 336COPTS += -Wno-stack-protector 337