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