TBCI Numerical high perf. C++ Library
2.8.0
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
home
abuild
rpmbuild
BUILD
numerix-2.0
lina
include
config_manual.h
Go to the documentation of this file.
1
231
#ifndef TBCI_CONFIG_MANUAL_H
232
#define TBCI_CONFIG_MANUAL_H
233
234
#ifdef __GNUC__
235
# warning Using config_manual.h is deprecated
236
#endif
237
242
#ifdef CONFIG_MANUAL_NEED_UNDEF
243
// Compiler bugs
244
# undef HAVE_PROMOTION_BUG
245
# undef HAVE_LIBC_GLOBAL_NS_BUG
246
# undef HAVE_CPP_GLOBAL_NS_BUG
247
# undef HAVE_CPLX_GLOBAL_NS_BUG
248
# undef HAVE_FRIEND_GLOBAL_NS_BUG
249
# undef HAVE_BUGGY_SSTREAM
250
# undef HAVE_BUGGY_NAMESPACE
251
# undef HAVE_BUGGY_EXCEPTIONS
252
# undef HAVE_FOR_SCOPING_BUG
253
# undef HAVE_NO_NEW_HEADERS_BUG
254
# undef HAVE_GCC295_FRIEND_BUG
255
# undef HAVE_GCC295_TMPLFRNDCLS_BUG
256
# undef HAVE_GCC296_TMPLVARARG_BUG
257
# undef HAVE_GCC300_CMATH_POWER_BUG
258
# undef HAVE_GCC320_MISS_CPLXFN_BUG
259
# undef HAVE_GCC34_LIBSTDCXX_REAL_IMAG_REF
260
# undef HAVE_MISS_STDCPLX_FANCY_FN_BUG
261
# undef HAVE_MISS_STDCPLX_LOG10_BUG
262
# undef HAVE_MISS_STDCPLX_TAN_BUG
263
# undef HAVE_STDCPLX_FABS
264
# undef HAVE_MISS_CPLX_IO_BUG
265
# undef HAVE_IGNORE_STD_NS_BUG
266
# undef HAVE_MISS_CSTD_ABS_BUG
267
# undef HAVE_BCXX_INHER_BREAKS_FRIEND_BUG
268
# undef HAVE_BCXX_TEMPL_INLINE_MFUNC_BUG
269
# undef HAVE_BCXX_TYPENAME_BUG
270
// Features (libc)
271
# undef HAVE_UNISTD_H
272
# undef HAVE_MEMALIGN
273
# undef HAVE_MALLINFO
274
# undef HAVE_FPUCW
275
# undef HAVE_NEW_FPUCTRL
276
# undef HAVE_FENV
277
# undef HAVE_SIGNALS
278
# undef HAVE_STRSIGNAL
279
# undef HAVE_ERRNO
280
# undef HAVE_PTHREADS
281
# undef HAVE_MINMAX_IN_SYS_PARAM_H
282
# undef HAVE_SYS_SYSINFO_H
283
# undef HAVE GET_NPROCS
284
# undef HAVE GETLOADAVG
285
# undef HAVE SCHED_GETAFFINITY
286
# undef HAVE PTHREAD_GETAFFINITY_NP
287
# undef HAVE PTHREAD_SPINLOCK
288
# undef HAVE_CLOCK_GETTIME
289
# undef HAVE_CPU_COUNT
290
// Features (C++ std lib)
291
# undef HAVE_LIMITS
292
# undef HAVE_SSTREAM
293
# undef HAVE_STD_MINMAX
294
# undef HAVE_NEED_FOR_GD
295
# undef HAVE_NEED_FOR_EXPL_TMPLPARM
296
// Features (compiler)
297
# undef HAVE_LONG_LONG
298
# undef HAVE_LONG_DOUBLE
299
# undef HAVE_NEED_FOR_GD
300
# undef HAVE_RESTRICT
301
# undef HAVE___RESTRICT__
302
# undef HAVE_TWOSTAGE_LOOKUP
303
# undef HAVE_NEED_FOR_FRIEND_SCOPE
304
// gcc features
305
# undef HAVE_SIGNATURE
306
# undef HAVE_BUILTIN_CPLX
307
# undef HAVE_ALIGN_ATTR
308
# undef HAVE_NEW_ALIGN_ATTR
309
# undef HAVE_TEMPL_ALIGN_ATTR
310
# undef HAVE_DECLSPEC_ALIGN
311
# undef HAVE_WEAK_ATTR
312
# undef HAVE_CONST_ATTR
313
# undef HAVE_REGPARM_ATTR
314
# undef HAVE_VISIBILITY_ATTR
315
# undef HAVE_MALLOC_ATTR
316
# undef HAVE_UNUSED_ATTR
317
# undef HAVE_HOT_ATTR
318
# undef HAVE_GCC_MINMAX
319
# undef HAVE_NAMED_RETVAL
320
# undef HAVE_PRAGMA_IFACE_IMPL
321
# undef HAVE_BUILTIN_EXPECT
322
# undef HAVE_BUILTIN_PREFETCH
323
# undef HAVE_PRETTY_FUNCTION
324
# undef HAVE_FUNC
325
# undef HAVE_TLS
326
# undef HAVE_DTLS
327
#endif
/* CONFIG_MANUAL_NEED_UNDEF */
328
329
/* GCC features */
330
#ifdef __GNUC__
331
# define HAVE_SIGNATURE 1
332
# define HAVE___RESTRICT__ 1
333
# define HAVE_BUILTIN_CPLX 1
334
# define HAVE_ALIGN_ATTR 1
335
# define HAVE_WEAK_ATTR 1
336
# define HAVE_UNUSED_ATTR 1
337
# define HAVE_CONST_ATTR 1
338
# define HAVE_REGPARM_ATTR 1
339
# define HAVE_PRAGMA_IFACE_IMPL 1
340
# if !defined(__GNUC_PATCHLEVEL__)
341
# if defined(__GNUC_SUBVER__)
342
# define __GNUC_PATCHLEVEL__ __GNUC_SUBVER__
343
# else
344
# define __GNUC_PATCHLEVEL__ 0
345
# endif
346
# endif
347
# define HAVE_PRETTY_FUNCTION __GNUC__
348
#endif
349
350
351
/* Visual C++ settings */
352
#if defined(_MSC_VER)
353
// Bugs
354
# define HAVE_PROMOTION_BUG 1
355
# define HAVE_LIBC_GLOBAL_NS_BUG 1
356
357
# if _MSC_VER < 1200
358
# define HAVE_NO_NEW_HEADERS_BUG 1
359
# define HAVE_BUGGY_NAMESPACE 1
360
# endif
361
362
# if _MSC_VER < 1400 // Let's assume that "you know who" finally
363
# define HAVE_FOR_SCOPING_BUG 1 // hires sb. with a minimum of intelligence
364
# endif // and fix this annoyance in the next version
365
366
# define HAVE_MISS_STDCPLX_FANCY_FN_BUG 1
367
//# undef HAVE_CPLX_GLOBAL_NS_BUG
368
369
// Features (libc)
370
//# define HAVE_MEMALIGN 1 // ???
371
//# define HAVE_SIGNALS 1 // ???
372
//# define HAVE_ERRNO 1 // ???
373
// Features (compiler)
374
//# define HAVE_LONG_LONG 1 // ???
375
//# define HAVE_LONG_DOUBLE 1 // ???
376
//# define HAVE_RESTRICT 1 // ???
377
// Features (C++ std lib)
378
//# define HAVE_LIMITS 1 // ???
379
# ifndef HAVE_SSTREAM // might have been defined somewhere else before
380
# define HAVE_SSTREAM 1
381
# endif
382
383
#endif
/* end of WIN32 stuff */
384
385
/* ICC features */
386
#ifdef __INTEL_COMPILER
387
# define HAVE_SSTREAM 1
388
// with -long_double we can get long double support, but FP constants
389
// > 64bit are not handled and intel warns for lib incompatibilities
390
//# define HAVE_LONG_DOUBLE 1
391
# define HAVE_LIMITS 1
392
# define HAVE_ALGORITHM 1
393
# define HAVE_STD_MINMAX 1
394
// needs -restrict
395
# define HAVE_RESTRICT 1
396
# if __INTEL_COMPILER < 600
397
# define HAVE_MISS_CSTD_ABS_BUG 1
398
# else
399
# define HAVE_LONG_LONG 1
400
# endif
401
# define HAVE_DECLSPEC_ALIGN 1
402
// The following are accepted by icc, but it's not clear
403
// whether they are effective
404
//# define HAVE_ALIGN_ATTR 1
405
# undef HAVE_ALIGN_ATTR
406
# define HAVE_WEAK_ATTR 1
407
# define HAVE_CONST_ATTR 1
408
# define HAVE_REGPARM_ATTR 1
409
# define HAVE_UNUSED_ATTR 1
410
# define HAVE_MISS_STDCPLX_FANCY_FN_BUG 1
411
// Seems to be needed in icc-6.00
412
# define HAVE_NEED_FOR_GD 1
413
# define HAVE_NEED_FOR_EXPL_TMPLPARM 1
414
# define HAVE_NEED_FOR_FRIEND_SCOPE 1
415
# define HAVE_IGNORE_STD_NS_BUG 1
416
# ifndef HAVE_PRETTY_FUNCTION
417
# define HAVE_PRETTY_FUNCTION 3
418
# endif
419
# ifdef __linux__
420
# define HAVE_TLS 1
421
# else
422
# define HAVE_DTLS 1
423
# endif
424
#endif
425
426
427
// Borland C (0x570)
428
#if defined(__BORLANDC__)
429
//# warning Borland C++ __BORLANDC__ poorly tested
430
// Supported/ignored attributes
431
# define HAVE_ALIGN_ATTR 1
432
# define HAVE_NEW_ALIGN_ATTR 1
433
# define HAVE_WEAK_ATTR 1
434
# define HAVE_CONST_ATTR 1
435
# define HAVE_REGPARM_ATTR 1
436
// Bugs
437
# define HAVE_BCXX_INHER_BREAKS_FRIEND_BUG 1
438
# define HAVE_BCXX_TEMPL_INLINE_MFUNC_BUG 1
439
# define HAVE_BCXX_TYPENAME_BUG 1
440
// C++ friend decls
441
# define HAVE_NEED_FOR_GD 1
442
# define HAVE_NEED_FOR_EXPL_TMPLPARM 1
443
# define HAVE_NEED_FOR_FRIEND_SCOPE 1
444
// std namespace
445
# define HAVE_IGNORE_STD_NS_BUG 1
446
// std::cplx functions
447
# define HAVE_MISS_STDCPLX_FANCY_FN_BUG 1
448
// types
449
# define HAVE_LONG_LONG 1
450
# define HAVE_LONG_DOUBLE 1
451
// headers
452
# define HAVE_SSTREAM 1
453
# define HAVE_LIMITS 1
454
# define HAVE_ALGORITHM 1
455
# define HAVE_MINMAX_IN_SYS_PARAM_H 1
456
# define HAVE_TLS 1 // according to http://en.wikipedia.org/wiki/Thread-Specific_Storage
457
// For some reason, unix is not set by bc++ 5.7 under linux
458
# ifdef __linux__
459
# define unix
460
# endif
461
#endif
462
463
/* General unix stuff */
464
#ifdef unix
465
# define HAVE_UNISTD_H 1
466
#endif
467
468
/* GCC version dependant bugs+features and C++ stdlib features */
469
#ifdef __GNUC__
470
# if __GNUC__ == 1
471
# error "Surely you must be joking! Compiling C++ with gcc-1?"
472
# endif
473
/* Common features of all GNU C++ compilers since 2.7.x */
474
# ifndef PEDANTIC
475
# define HAVE_LONG_LONG 1
476
# define HAVE_LONG_DOUBLE 1
477
# endif
478
# define HAVE_NEED_FOR_GD 1
479
# define HAVE_NEED_FOR_EXPL_TMPLPARM 1
480
# define HAVE_MALLOC_ATTR 1
481
/* Version dependant */
482
# if __GNUC__ == 2
483
# define HAVE_MISS_STDCPLX_FANCY_FN_BUG 1
484
# define HAVE_MISS_STDCPLX_LOG10_BUG 1
485
# define HAVE_MISS_STDCPLX_TAN_BUG 1
486
# define HAVE_IGNORE_STD_NS_BUG 1
487
# ifndef PEDANTIC
488
# define HAVE_GCC_MINMAX 1
489
# endif
490
# define HAVE_NAMED_RETVAL 1
491
# define HAVE_FUNC 2
492
# define __func__ __FUNCTION__
493
# if __GNUC_MINOR__ <= 7
494
# error "gcc-2.7.x or lower will never succeed compiling the TBCI library!"
495
# elif __GNUC_MINOR__ == 8 || __GNUC_MINOR__ == 90
/* gcc-2.8 or egcs-1.0 */
496
# warning "egcs-1.0.x or gcc-2.8.x are not recommended for use with TBCI."
497
# warning "Better use egcs-1.1.x, gcc-2.95.x or newer."
498
# define HAVE_LIBC_GLOBAL_NS_BUG 1
499
# define HAVE_NO_NEW_HEADERS_BUG 1
500
# define HAVE_BUGGY_NAMESPACE 1
501
// What about SSTREAM, LIMITS ?
502
# elif __GNUC_MINOR__ == 91
/* egcs-1.1 */
503
/* no relevant bugs! */
504
# if defined(__GNUC_PATCHLEVEL__) && __GNUC_PATCHLEVEL__ < 52
505
# define HAVE_BUGGY_NAMESPACE 1
506
# endif
507
# elif __GNUC_MINOR__ == 95
/* gcc-2.95.x */
508
# define HAVE_GCC295_FRIEND_BUG 1
509
# define HAVE_GCC295_TMPLFRNDCLS_BUG 1
510
# if defined(__GNUC_PATCHLEVEL__) && __GNUC_PATCHLEVEL__ >= 3
511
# define HAVE_SSTREAM 1
512
# endif
513
# elif __GNUC_MINOR__ > 95
/* gcc-2.96, 2.97 versions */
514
# define HAVE_GCC295_FRIEND_BUG 1
515
# define HAVE_GCC296_TMPLVARARG_BUG 1
516
# define HAVE_SSTREAM 1
517
# if __GNUC_MINOR__ == 96 //&& defined(__alpha__)
518
# define HAVE_BUGGY_SSTREAM 1
519
# endif
520
// What about LIMITS ?
521
# else
522
//# define HAVE_SSTREAM 1
523
# warning "Unknown gcc variant!"
524
# endif
525
# elif __GNUC__ == 3
526
# define HAVE_FUNC 3
527
# define HAVE_SSTREAM 1
528
# define HAVE_LIMITS 1
529
# define HAVE_ALGORITHM 1
530
# define HAVE_STD_MINMAX 1
531
//# define HAVE_RESTRICT 1
532
# define HAVE_BUILTIN_EXPECT 1
533
# ifndef PEDANTIC
534
# define HAVE_GCC_MINMAX 1
535
# endif
536
# if __GNUC_MINOR__ == 0
537
# define __func__ __FUNCTION__
538
# if __GNUC_PATCHLEVEL__ == 0
539
# define HAVE_GCC300_CMATH_POWER_BUG 1
540
# endif
541
# else
542
# define HAVE_BUILTIN_PREFETCH 1
543
# endif
544
# if __GNUC_MINOR__ > 0
545
# define HAVE_GCC320_MISS_CPLXFN_BUG 1
546
# define HAVE_GCC300_CMATH_POWER_BUG 1
547
# endif
548
# if __GNUC_MINOR__ >= 4
549
# define HAVE_NEW_ALIGN_ATTR 1
550
# define HAVE_TWOSTAGE_LOOKUP 1
551
# define HAVE_NEED_FOR_FRIEND_SCOPE 1
552
# define HAVE_GCC34_LIBSTDCXX_REAL_IMAG_REF 1
553
# undef HAVE_SIGNATURE // deprecated
554
# endif
555
# if __GNUC_MINOR__ >= 3
556
# define HAVE_XMMINTRIN_H 1
557
# define HAVE_EMMINTRIN_H 1
558
# define HAVE_PMMINTRIN_H 1
559
# define HAVE_TLS 1
560
# endif
561
# elif __GNUC__ == 4
562
# define HAVE_FUNC 4
563
# define HAVE_TLS 1
564
# define HAVE_SSTREAM 1
565
# define HAVE_LIMITS 1
566
# define HAVE_ALGORITHM 1
567
# define HAVE_STD_MINMAX 1
568
//# define HAVE_RESTRICT 1
569
# define HAVE_BUILTIN_EXPECT 1
570
# define HAVE_BUILTIN_PREFETCH 1
571
# define HAVE_GCC320_MISS_CPLXFN_BUG 1
572
# define HAVE_GCC300_CMATH_POWER_BUG 1
573
# define HAVE_NEW_ALIGN_ATTR 1
574
# define HAVE_VISIBILITY_ATTR 1
575
# define HAVE_TWOSTAGE_LOOKUP 1
576
# define HAVE_NEED_FOR_FRIEND_SCOPE 1
577
# define HAVE_GCC34_LIBSTDCXX_REAL_IMAG_REF 1
578
# undef HAVE_GCC_MINMAX // deprecated
579
# undef HAVE_SIGNATURE // not supported any longer
580
# define HAVE_XMMINTRIN_H 1
581
# define HAVE_EMMINTRIN_H 1
582
# define HAVE_PMMINTRIN_H 1
583
# if __GNUC_MINOR__ >= 4
584
# define HAVE_HOT_ATTR 1
585
# endif
586
# elif __GNUC__ >= 5
587
# define HAVE_FUNC 5
588
# define HAVE_TLS 1
589
# define HAVE_SSTREAM 1
590
# define HAVE_LIMITS 1
591
# define HAVE_ALGORITHM 1
592
# define HAVE_STD_MINMAX 1
593
# define HAVE___RESTRICT__ 1
594
# define HAVE_BUILTIN_EXPECT 1
595
# define HAVE_BUILTIN_PREFETCH 1
596
# define HAVE_NEW_ALIGN_ATTR 1
597
# define HAVE_VISIBILITY_ATTR 1
598
# define HAVE_TWOSTAGE_LOOKUP 1
599
# define HAVE_NEED_FOR_FRIEND_SCOPE 1
600
# define HAVE_GCC34_LIBSTDCXX_REAL_IMAG_REF 1
601
# undef HAVE_GCC_MINMAX // deprecated
602
# undef HAVE_SIGNATURE // not supported any longer
603
# define HAVE_XMMINTRIN_H 1
604
# define HAVE_EMMINTRIN_H 1
605
# define HAVE_PMMINTRIN_H 1
606
# define HAVE_HOT_ATTR 1
607
# define HAVE_STDCPLX_FABS 1
608
# define HAVE_NOEXCEPT_FALSE 1
609
# endif
610
#endif
611
612
/* Now for SGI MIPSpro and DEC CXX compilers ... */
613
#if (defined(_SGI_SOURCE) && defined(_COMPILER_VERSION) && !defined(__GNUC__)) || defined(__DECCXX)
614
# define HAVE_LONG_LONG 1
615
# define HAVE_SSTREAM 1
616
# define HAVE_MISS_STDCPLX_FANCY_FN_BUG 1
617
# define HAVE_NEED_FOR_GD 1
618
# define HAVE_NEED_FOR_EXPL_TMPLPARM 1
619
# define HAVE_NEED_FOR_FRIEND_SCOPE 1
620
# ifdef __DECCXX
621
# define HAVE_RESTRICT 1
622
# define HAVE_IGNORE_STD_NS_BUG 1
623
//# define HAVE_LONG_DOUBLE 1
624
# else
/* MIPSpro */
625
# define HAVE_NO_NEW_HEADERS_BUG 1 // Yes, in 2002 this is still possible!
626
//# define HAVE_CPLX_GLOBAL_NS_BUG 1
627
//# define HAVE_MISS_CPLX_IO_BUG 1
628
# define HAVE_LIBC_GLOBAL_NS_BUG 1
629
# define HAVE_FRIEND_GLOBAL_NS_BUG 1
630
//# define HAVE_GCC295_FRIEND_BUG 1
631
//# define HAVE_RESTRICT 1 // needs -LANG:restrict=ON
632
//# define HAVE_FOR_SCOPING_BUG 1
633
//# define HAVE_CPP_GLOBAL_NS_BUG 1
634
# endif
635
#endif
636
637
638
/* C library */
639
#ifdef unix
640
# define HAVE_ERRNO 1 // ???
641
# if !defined(_SGI_SOURCE) && !defined(__FreeBSD__)
642
# include <features.h>
643
# endif
644
/* In principle, we should test for the __USE_* macros ... */
645
# ifdef HAVE_UNISTD_H
646
# include <unistd.h>
647
# ifdef _POSIX_THREADS
648
# define HAVE_PTHREADS 1
649
# endif
650
# endif
651
# ifdef __GLIBC__
652
/* All versions of glibc */
653
# define HAVE_MEMALIGN 2
654
# define HAVE_MALLOC_H 1
655
# define HAVE_MALLINFO 1
656
# define HAVE_SIGNALS 1
657
//# define HAVE_STRSIGNAL 1
658
# define HAVE_ERRNO 1
659
# if __GLIBC__ == 2
660
# define HAVE_SYS_SYSINFO_H 1
661
# define HAVE_GET_NPROCS 1
662
# define HAVE_GETLOADAVG 1
663
# define HAVE_STRSIGNAL 1
664
# if defined(__GLIBC_MINOR__) && __GLIBC_MINOR__ < 1
/* glibc-2.0 */
665
# ifdef i386
666
# define HAVE_FPUCW 1
667
# endif
668
# endif
669
# if defined (__GLIBC_MINOR__)
670
# if __GLIBC_MINOR__ >= 1
671
# define HAVE_NEW_FPUCTRL 1
672
# endif
673
# if __GLIBC_MINOR__ >= 2
674
# define HAVE_FENV
675
# endif
676
# if __GLIBC_MINOR__ >= 3
677
# define HAVE_SCHED_GETAFFINITY 1
678
# define HAVE_CLOCK_GETTIME 1 // guessed
679
# endif
680
# if __GLIBC_MINOR__ >= 4 && defined(HAVE_PTHREADS)
681
# define HAVE_PTHREAD_GETAFFINITY_NP 1
682
# define HAVE PTHREAD_SPINLOCK 1
683
# endif
684
# if __GLIBC_MINOR__ >= 8
685
# define HAVE_CPU_COUNT 1
686
# endif
687
# endif
688
# endif
689
# endif
690
# ifdef _SYSTYPE_SVR4
691
# define HAVE_MINMAX_IN_SYS_PARAM_H 1
692
# endif
693
#endif
694
695
#endif
/* TBCI_CONFIG_MANUAL_H */
Generated by
1.8.5