1# $NetBSD: Makefile,v 1.9 2011/09/21 02:06:42 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 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 buildopt.c \ 38 cache.c \ 39 cbrt.c \ 40 check.c \ 41 clear.c \ 42 clears.c \ 43 cmp.c \ 44 cmp2.c \ 45 cmp_abs.c \ 46 cmp_d.c \ 47 cmp_ld.c \ 48 cmp_si.c \ 49 cmp_ui.c \ 50 comparisons.c \ 51 const_catalan.c \ 52 const_euler.c \ 53 const_log2.c \ 54 const_pi.c \ 55 constant.c \ 56 copysign.c \ 57 cos.c \ 58 cosh.c \ 59 cot.c \ 60 coth.c \ 61 csc.c \ 62 csch.c \ 63 d_div.c \ 64 d_sub.c \ 65 digamma.c \ 66 dim.c \ 67 div.c \ 68 div_2exp.c \ 69 div_2si.c \ 70 div_2ui.c \ 71 div_d.c \ 72 div_ui.c \ 73 dump.c \ 74 eint.c \ 75 eq.c \ 76 erf.c \ 77 erfc.c \ 78 exp.c \ 79 exp10.c \ 80 exp2.c \ 81 exp3.c \ 82 exp_2.c \ 83 expm1.c \ 84 factorial.c \ 85 fits_intmax.c \ 86 fits_sint.c \ 87 fits_slong.c \ 88 fits_sshort.c \ 89 fits_uint.c \ 90 fits_uintmax.c \ 91 fits_ulong.c \ 92 fits_ushort.c \ 93 fma.c \ 94 fms.c \ 95 frac.c \ 96 free_cache.c \ 97 gamma.c \ 98 gammaonethird.c \ 99 get_d.c \ 100 get_d64.c \ 101 get_exp.c \ 102 get_f.c \ 103 get_flt.c \ 104 get_ld.c \ 105 get_patches.c \ 106 get_si.c \ 107 get_sj.c \ 108 get_str.c \ 109 get_ui.c \ 110 get_uj.c \ 111 get_z.c \ 112 get_z_exp.c \ 113 gmp_op.c \ 114 hypot.c \ 115 init.c \ 116 init2.c \ 117 inits.c \ 118 inits2.c \ 119 inp_str.c \ 120 int_ceil_log2.c \ 121 isinf.c \ 122 isinteger.c \ 123 isnan.c \ 124 isnum.c \ 125 isqrt.c \ 126 isregular.c \ 127 iszero.c \ 128 jn.c \ 129 li2.c \ 130 lngamma.c \ 131 log.c \ 132 log10.c \ 133 log1p.c \ 134 log2.c \ 135 logging.c \ 136 min_prec.c \ 137 minmax.c \ 138 modf.c \ 139 mp_clz_tab.c \ 140 mpfr-gmp.c \ 141 mpn_exp.c \ 142 mul.c \ 143 mul_2exp.c \ 144 mul_2si.c \ 145 mul_2ui.c \ 146 mul_d.c \ 147 mul_ui.c \ 148 mulders.c \ 149 neg.c \ 150 next.c \ 151 out_str.c \ 152 pow.c \ 153 pow_si.c \ 154 pow_ui.c \ 155 pow_z.c \ 156 powerof2.c \ 157 print_raw.c \ 158 print_rnd_mode.c \ 159 printf.c \ 160 rec_sqrt.c \ 161 reldiff.c \ 162 rem1.c \ 163 rint.c \ 164 root.c \ 165 round_near_x.c \ 166 round_p.c \ 167 round_prec.c \ 168 scale2.c \ 169 sec.c \ 170 sech.c \ 171 set.c \ 172 set_d.c \ 173 set_d64.c \ 174 set_dfl_prec.c \ 175 set_exp.c \ 176 set_f.c \ 177 set_flt.c \ 178 set_inf.c \ 179 set_ld.c \ 180 set_nan.c \ 181 set_prc_raw.c \ 182 set_prec.c \ 183 set_q.c \ 184 set_rnd.c \ 185 set_si.c \ 186 set_si_2exp.c \ 187 set_sj.c \ 188 set_str.c \ 189 set_str_raw.c \ 190 set_ui.c \ 191 set_ui_2exp.c \ 192 set_uj.c \ 193 set_z.c \ 194 set_z_exp.c \ 195 set_zero.c \ 196 setmax.c \ 197 setmin.c \ 198 setsign.c \ 199 sgn.c \ 200 si_op.c \ 201 signbit.c \ 202 sin.c \ 203 sin_cos.c \ 204 sinh.c \ 205 sinh_cosh.c \ 206 sqr.c \ 207 sqrt.c \ 208 sqrt_ui.c \ 209 stack_interface.c \ 210 strtofr.c \ 211 sub.c \ 212 sub1.c \ 213 sub1sp.c \ 214 sub_d.c \ 215 sub_ui.c \ 216 subnormal.c \ 217 sum.c \ 218 swap.c \ 219 tan.c \ 220 tanh.c \ 221 uceil_log2.c \ 222 ufloor_log2.c \ 223 ui_div.c \ 224 ui_pow.c \ 225 ui_pow_ui.c \ 226 ui_sub.c \ 227 urandom.c \ 228 urandomb.c \ 229 vasprintf.c \ 230 version.c \ 231 volatile.c \ 232 yn.c \ 233 zeta.c \ 234 zeta_ui.c 235 236SRCS+= \ 237 exceptions.c \ 238 extract.c \ 239 uceil_exp2.c \ 240 uceil_log2.c \ 241 ufloor_log2.c \ 242 add.c \ 243 add1.c \ 244 add_ui.c \ 245 agm.c \ 246 clear.c \ 247 cmp.c \ 248 cmp_abs.c \ 249 cmp_si.c \ 250 cmp_ui.c \ 251 comparisons.c \ 252 div_2exp.c \ 253 div_2si.c \ 254 div_2ui.c \ 255 div.c \ 256 div_ui.c \ 257 dump.c \ 258 eq.c \ 259 exp10.c \ 260 exp2.c \ 261 exp3.c \ 262 exp.c \ 263 frac.c \ 264 get_d.c \ 265 get_exp.c \ 266 get_str.c \ 267 init.c \ 268 inp_str.c \ 269 isinteger.c \ 270 isinf.c \ 271 isnan.c \ 272 isnum.c \ 273 const_log2.c \ 274 log.c \ 275 modf.c \ 276 mul_2exp.c \ 277 mul_2si.c \ 278 mul_2ui.c \ 279 mul.c \ 280 mul_ui.c \ 281 neg.c \ 282 next.c \ 283 out_str.c \ 284 printf.c \ 285 vasprintf.c \ 286 const_pi.c \ 287 pow.c \ 288 pow_si.c \ 289 pow_ui.c \ 290 print_raw.c \ 291 print_rnd_mode.c \ 292 reldiff.c \ 293 round_prec.c \ 294 set.c \ 295 setmax.c \ 296 setmin.c \ 297 set_d.c \ 298 set_dfl_prec.c \ 299 set_exp.c \ 300 set_rnd.c \ 301 set_f.c \ 302 set_prc_raw.c \ 303 set_prec.c \ 304 set_q.c \ 305 set_si.c \ 306 set_str.c \ 307 set_str_raw.c \ 308 set_ui.c \ 309 set_z.c \ 310 sqrt.c \ 311 sqrt_ui.c \ 312 sub.c \ 313 sub1.c \ 314 sub_ui.c \ 315 rint.c \ 316 ui_div.c \ 317 ui_sub.c \ 318 urandom.c \ 319 urandomb.c \ 320 get_z_exp.c \ 321 swap.c \ 322 factorial.c \ 323 cosh.c \ 324 sinh.c \ 325 tanh.c \ 326 sinh_cosh.c \ 327 acosh.c \ 328 asinh.c \ 329 atanh.c \ 330 atan.c \ 331 cmp2.c \ 332 exp_2.c \ 333 asin.c \ 334 const_euler.c \ 335 cos.c \ 336 sin.c \ 337 tan.c \ 338 fma.c \ 339 fms.c \ 340 hypot.c \ 341 log1p.c \ 342 expm1.c \ 343 log2.c \ 344 log10.c \ 345 ui_pow.c \ 346 ui_pow_ui.c \ 347 minmax.c \ 348 dim.c \ 349 signbit.c \ 350 copysign.c \ 351 setsign.c \ 352 gmp_op.c \ 353 init2.c \ 354 acos.c \ 355 sin_cos.c \ 356 set_nan.c \ 357 set_inf.c \ 358 set_zero.c \ 359 powerof2.c \ 360 gamma.c \ 361 set_ld.c \ 362 get_ld.c \ 363 cbrt.c \ 364 volatile.c \ 365 fits_sshort.c \ 366 fits_sint.c \ 367 fits_slong.c \ 368 fits_ushort.c \ 369 fits_uint.c \ 370 fits_ulong.c \ 371 fits_uintmax.c \ 372 fits_intmax.c \ 373 get_si.c \ 374 get_ui.c \ 375 zeta.c \ 376 cmp_d.c \ 377 erf.c \ 378 inits.c \ 379 inits2.c \ 380 clears.c \ 381 sgn.c \ 382 check.c \ 383 sub1sp.c \ 384 version.c \ 385 mpn_exp.c \ 386 mpfr-gmp.c \ 387 mp_clz_tab.c \ 388 sum.c \ 389 add1sp.c \ 390 free_cache.c \ 391 si_op.c \ 392 cmp_ld.c \ 393 set_ui_2exp.c \ 394 set_si_2exp.c \ 395 set_uj.c \ 396 set_sj.c \ 397 get_sj.c \ 398 get_uj.c \ 399 get_z.c \ 400 iszero.c \ 401 cache.c \ 402 sqr.c \ 403 int_ceil_log2.c \ 404 isqrt.c \ 405 strtofr.c \ 406 pow_z.c \ 407 logging.c \ 408 mulders.c \ 409 get_f.c \ 410 round_p.c \ 411 erfc.c \ 412 atan2.c \ 413 subnormal.c \ 414 const_catalan.c \ 415 root.c \ 416 sec.c \ 417 csc.c \ 418 cot.c \ 419 eint.c \ 420 sech.c \ 421 csch.c \ 422 coth.c \ 423 round_near_x.c \ 424 constant.c \ 425 abort_prec_max.c \ 426 stack_interface.c \ 427 lngamma.c \ 428 zeta_ui.c \ 429 set_d64.c \ 430 get_d64.c \ 431 jn.c \ 432 yn.c \ 433 rem1.c \ 434 get_patches.c \ 435 add_d.c \ 436 sub_d.c \ 437 d_sub.c \ 438 mul_d.c \ 439 div_d.c \ 440 d_div.c \ 441 li2.c \ 442 rec_sqrt.c \ 443 min_prec.c \ 444 buildopt.c \ 445 digamma.c \ 446 bernoulli.c \ 447 isregular.c \ 448 set_flt.c \ 449 get_flt.c \ 450 scale2.c \ 451 set_z_exp.c \ 452 ai.c \ 453 gammaonethird.c 454 455CPPFLAGS+= -I. \ 456 -DHAVE_INTTYPES_H=1 \ 457 -DHAVE_STDINT_H=1 \ 458 -DTIME_WITH_SYS_TIME=1 \ 459 -DHAVE_LOCALE_H=1 \ 460 -DHAVE_WCHAR_H=1 \ 461 -DHAVE_STDARG=1 \ 462 -DHAVE_SYS_TIME_H=1 \ 463 -DHAVE_STDINT_H=1 \ 464 -DHAVE_VA_COPY=1 \ 465 -DHAVE_SETLOCALE=1 \ 466 -DHAVE_GETTIMEOFDAY=1 \ 467 -DHAVE_LONG_LONG=1 \ 468 -DHAVE_INTMAX_T=1 \ 469 -DMPFR_HAVE_INTMAX_MAX=1 \ 470 -DMPFR_HAVE_FESETROUND=1 \ 471 -DHAVE_DENORMS=1 \ 472 -DHAVE_ROUND=1 \ 473 -DHAVE_TRUNC=1 \ 474 -DHAVE_FLOOR=1 \ 475 -DHAVE_CEIL=1 \ 476 -DHAVE_ATTRIBUTE_MODE=1 477 478# Find <gmp.h> 479CPPFLAGS+= -I${NETBSDSRCDIR}/external/lgpl3/gmp/lib/libgmp/arch/${MACHINE_ARCH} 480 481# XXX 482# XXX XXX check mips* 483# XXX XXX do something more, more ports!! 484# XXX 485# XXX missing: arm* sparc sh3* m68k/m68000 (powerpc64/ia64) 486 487# IEEE FP support. No VAX here. 488.if ${MACHINE_ARCH} == "x86_64" || \ 489 ${MACHINE_ARCH} == "i386" 490 ${MACHINE_ARCH} == "mipsel" 491CPPFLAGS+= -DHAVE_LDOUBLE_IEEE_EXT_LITTLE=1 492.endif 493 494.if ${MACHINE_ARCH} == "mips64el" 495CPPFLAGS+= -DHAVE_LDOUBLE_IEEE_QUAD_LITTLE=1 496.endif 497 498.if ${MACHINE_ARCH} == "sparc64" || \ 499 ${MACHINE_ARCH} == "powerpc" || \ 500 ${MACHINE_ARCH} == "powerpc64" || \ 501 ${MACHINE_ARCH} == "mips64eb" 502CPPFLAGS+= -DHAVE_LDOUBLE_IEEE_QUAD_BIG=1 503.endif 504 505WITHOUT_MAN= yes 506 507.include <bsd.lib.mk> 508 509mparam.h: mparam_h.in 510 cp ${.ALLSRC} ${.TARGET} 511 512${SRCS}: mparam.h 513CLEANFILES+= mparam.h 514 515.PATH: ${.CURDIR}/../../dist 516 517.if ${MACHINE_ARCH} == "vax" 518COPTS.set_ld.c+= -Wno-error 519.endif 520 521# Don't warn about functions which cannot be stack smash protected as 522# there are a lot of them. 523.if defined(HAVE_GCC) || defined(HAVE_PCC) 524COPTS += -Wno-stack-protector 525.endif 526