File indexing completed on 2025-01-18 10:10:37
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef ROOT_RConfig
0012 #define ROOT_RConfig
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 #include "../RVersion.h"
0023 #include "RConfigure.h"
0024
0025
0026
0027
0028 #if defined __has_feature
0029 # if __has_feature(modules)
0030 # define R__CXXMODULES
0031 # endif
0032 #endif
0033
0034 #define R__USE_SHADOW_CLASS
0035
0036
0037 #define R__ANSISTREAM
0038 #define R__SSTREAM
0039
0040 #if defined(_MSC_VER)
0041 # if (_MSC_VER < 1910)
0042 # error "ROOT requires Visual Studio 2017 or higher."
0043 # else
0044 # define R__NULLPTR
0045 # endif
0046 #else
0047 #if defined(__cplusplus) && (__cplusplus < 201703L)
0048 #error "ROOT requires support for C++17 or higher."
0049 # if defined(__GNUC__) || defined(__clang__)
0050 #error "Pass `-std=c++17` as compiler argument."
0051 # endif
0052 # endif
0053 #endif
0054
0055
0056
0057 #ifdef __hpux
0058
0059 # define R__HPUX
0060 # define R__UNIX
0061 # define ANSICPP
0062 # ifdef __LP64__
0063 # define R__B64
0064 # endif
0065 # ifdef R__HPUX10
0066 # define NEED_SNPRINTF
0067 # endif
0068 #endif
0069
0070 #ifdef _AIX
0071 # define R__AIX
0072 # define R__UNIX
0073 # define ANSICPP
0074 # define R__SEEK64
0075 # define NEED_STRCASECMP
0076 #endif
0077
0078 #if defined(__linux) || defined(__linux__)
0079 # ifndef linux
0080 # define linux
0081 # endif
0082 #endif
0083
0084 #if defined(__CYGWIN__) && defined(__GNUC__)
0085 # ifndef linux
0086 # define linux
0087 # endif
0088 # ifndef R__WINGCC
0089 # define R__WINGCC
0090 # endif
0091 #endif
0092
0093 #if defined(__sun) && !(defined(linux) || defined(__FCC_VERSION))
0094 # ifdef __SVR4
0095 # define R__SOLARIS
0096 # define R__SEEK64
0097 # define ANSICPP
0098 # ifdef __i386
0099 # define R__BYTESWAP
0100 # endif
0101 # ifdef __x86_64
0102 # define R__B64
0103 # define R__BYTESWAP
0104 # endif
0105 # else
0106 # define R__SUN
0107 # include <stdlib.h>
0108 # endif
0109 # define R__UNIX
0110 # define NEED_STRING
0111 # define NEED_SIGJMP
0112 # if __SUNPRO_CC > 0x420
0113 # define R__SOLARIS_CC50
0114 # endif
0115 # if __SUNPRO_CC >= 0x420
0116 # define R__SUNCCBUG
0117 # endif
0118 # if __GNUC__ >= 3 || __GNUC_MINOR__ >= 90
0119 # define R__SUNGCC3
0120 # endif
0121 #endif
0122
0123 #if defined(__FCC_VERSION)
0124 # define R__SOLARIS
0125 # define R__SEEK64
0126 # define ANSICPP
0127 # define R__UNIX
0128 # define NEED_STRING
0129 # define NEED_SIGJMP
0130 #endif
0131
0132 #if defined(linux)
0133 # ifndef _LARGEFILE64_SOURCE
0134 # define _LARGEFILE64_SOURCE
0135 # endif
0136 # include <features.h>
0137 # if __GNU_LIBRARY__ == 6
0138 # ifndef R__GLIBC
0139 # define R__GLIBC
0140 # endif
0141 # endif
0142 # if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 2
0143 # define R__NONSCALARFPOS2
0144 # define R__USESTHROW
0145 # define R__SEEK64
0146 # endif
0147 # if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 38)
0148 # define HAS_STRLCPY
0149 # endif
0150 #endif
0151
0152 #if defined(linux) && defined(__i386__)
0153 # define R__LINUX
0154 # define R__UNIX
0155 # define R__BYTESWAP
0156 # ifndef __i486__
0157 # define __i486__
0158 # endif
0159 # define NEED_SIGJMP
0160 #endif
0161
0162 #if defined(linux) && defined(__ia64__)
0163 # define R__LINUX
0164 # define R__UNIX
0165 # define R__BYTESWAP
0166 # define R__B64
0167 # define NEED_SIGJMP
0168 #endif
0169
0170 #if defined(linux) && defined(__x86_64__)
0171 # define R__LINUX
0172 # define R__UNIX
0173 # define R__BYTESWAP
0174 # define R__B64
0175 # define NEED_SIGJMP
0176 #endif
0177
0178 #if defined(linux) && defined(__arm__)
0179 # define R__LINUX
0180 # define R__UNIX
0181 # define R__BYTESWAP
0182 # define NEED_SIGJMP
0183 #endif
0184
0185 #if defined(linux) && defined(__sparc__)
0186 # define R__LINUX
0187 # define R__UNIX
0188 # define NEED_SIGJMP
0189
0190 #endif
0191
0192 #if defined(linux) && defined(__hppa)
0193 # define R__LINUX
0194 # define R__UNIX
0195 # define NEED_SIGJMP
0196 #endif
0197
0198 #if defined(linux) && defined(__powerpc__)
0199 # define R__LINUX
0200 # define R__UNIX
0201 # define NEED_SIGJMP
0202 # if defined(R__ppc64)
0203 # define R__B64
0204 # endif
0205 # if defined(_LITTLE_ENDIAN)
0206 # define R__BYTESWAP
0207 # endif
0208 #endif
0209
0210 #if defined(linux) && defined(__aarch64__)
0211 # define R__LINUX
0212 # define R__UNIX
0213 # define R__BYTESWAP
0214 # define R__B64
0215 # define NEED_SIGJMP
0216 #endif
0217
0218 #if defined(linux) && defined(__s390__)
0219 # define R__LINUX
0220 # define R__UNIX
0221 # define NEED_SIGJMP
0222 #endif
0223
0224 #if defined(linux) && defined(__s390x__)
0225 # define R__LINUX
0226 # define R__UNIX
0227 # define R__B64
0228 # define NEED_SIGJMP
0229 #endif
0230
0231 #if defined(linux) && defined(__riscv)
0232 # define R__LINUX
0233 # define R__UNIX
0234 # define R__BYTESWAP
0235 # if __riscv_xlen >= 64
0236 # define R__B64
0237 # endif
0238 # define NEED_SIGJMP
0239 #endif
0240
0241 #if defined(__MACH__) && defined(__i386__) && !defined(__APPLE__)
0242 # define R__HURD
0243 # define f2cFortran
0244 # define R__UNIX
0245 # define R__BYTESWAP
0246 # define R__GLIBC
0247 # define NEED_SIGJMP
0248 #endif
0249
0250 #if defined(__Lynx__) && defined(__powerpc__)
0251 # define R__LYNXOS
0252 # define R__UNIX
0253 # define ANSICPP
0254 # define NEED_SIGJMP
0255 # define NEED_STRCASECMP
0256 # define NEED_SNPRINTF
0257 #endif
0258
0259 #if defined(__FreeBSD__)
0260 # define R__FBSD
0261 # define R__UNIX
0262 # define R__BYTESWAP
0263 # if defined(__i386__)
0264 # ifndef __i486__
0265 # define __i486__
0266 # endif
0267 # endif
0268 # if defined(__amd64__)
0269 # define R__B64
0270 # endif
0271 # define HAS_STRLCPY
0272 #endif
0273
0274 #if defined(__OpenBSD__)
0275 # define R__OBSD
0276 # define R__UNIX
0277 # define R__BYTESWAP
0278 # if defined(__i386__)
0279 # ifndef __i486__
0280 # define __i486__
0281 # endif
0282 # endif
0283 # if defined(__amd64__)
0284 # define R__B64
0285 # endif
0286 # define HAS_STRLCPY
0287 #endif
0288
0289 #if defined(__APPLE__)
0290 # include <AvailabilityMacros.h>
0291 # include <TargetConditionals.h>
0292 # define R__MACOSX
0293 # define R__UNIX
0294 # if defined(__xlC__) || defined(__xlc__)
0295 # define ANSICPP
0296 # endif
0297 # if defined(__ppc64__)
0298 # define R__B64
0299 # endif
0300 # if defined(__i386__)
0301 # define R__BYTESWAP
0302 # endif
0303 # if defined(__x86_64__)
0304 # define R__BYTESWAP
0305 # define R__B64
0306 # endif
0307 # if defined(__arm__)
0308 # define R__BYTESWAP
0309 # endif
0310 # if defined (__arm64__)
0311 # define R__BYTESWAP
0312 # define R__B64
0313 # endif
0314 # define HAS_STRLCPY
0315 #endif
0316
0317 #ifdef _HIUX_SOURCE
0318 # define R__HIUX
0319 # define R__UNIX
0320 # define NEED_SIGJMP
0321 # define NEED_SNPRINTF
0322 # define ANSICPP
0323 #endif
0324
0325 #ifdef __GNUC__
0326 # define R__GNU
0327 # define ANSICPP
0328 # if __GNUC__ > 4 || ( __GNUC__ == 4 && __GNUC_MINOR__ > 1)
0329 # define R__PRAGMA_DIAGNOSTIC
0330 # endif
0331 # if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
0332 # define R__BYTESWAP
0333 # endif
0334 #endif
0335
0336 #if defined(__GLIBCXX__) && !defined(__cpp_sized_deallocation)
0337
0338
0339
0340 #else
0341 # define R__SIZEDDELETE
0342 #endif
0343
0344
0345
0346 #if defined(__GNUC__) && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3))
0347 # define R__HIDDEN __attribute__((__visibility__("hidden")))
0348 #else
0349 # define R__HIDDEN
0350 #endif
0351
0352 #ifdef __INTEL_COMPILER
0353 # define R__INTEL_COMPILER
0354 # define ANSICPP
0355 #endif
0356
0357 #ifdef __HP_aCC
0358 # define R__ACC
0359 # if __HP_aCC <= 015000
0360 # define R__OLDHPACC
0361 # define R__TEMPLATE_OVERLOAD_BUG
0362 # define R__GLOBALSTL
0363 #error "ROOT requires proper support for C++17 or higher"
0364 # else
0365 # define R__TMPLTSTREAM
0366 # endif
0367 # ifndef _INCLUDE_LONGLONG
0368 # define _INCLUDE_LONGLONG
0369 # endif
0370 #endif
0371
0372 #ifdef _WIN32
0373 # define R__WIN32
0374 # ifndef WIN32
0375 # define WIN32
0376 # endif
0377 # define R__BYTESWAP
0378 # define R__ACCESS_IN_SYMBOL
0379
0380
0381 #endif
0382 #ifdef _WIN64
0383 # define R__WIN64
0384 # ifndef WIN64
0385 # define WIN64
0386 # endif
0387 # define R__x86_64__ 1
0388 # define R__B64
0389 #endif
0390
0391 #ifdef __SC__
0392 # define SC
0393 # define R__SC
0394 # if defined(WIN32)
0395 # define NEED_STRING
0396 # define NEED_STRCASECMP
0397 # define NEED_SNPRINTF
0398 # define ANSICPP
0399 # else
0400 # define MSDOS
0401 # define NEED_STRCASECMP
0402 # define R__BYTESWAP
0403 # endif
0404 #endif
0405
0406 #ifdef _MSC_VER
0407 # define R__VISUAL_CPLUSPLUS
0408 # define NEED_STRING
0409 # define NEED_STRCASECMP
0410 # if _MSC_VER < 1900
0411 # define NEED_SNPRINTF
0412 # endif
0413 # define ANSICPP
0414 # if _MSC_VER >= 1400
0415 # define DONTNEED_VSNPRINTF
0416 # endif
0417 # if _MSC_VER < 1310
0418 # define R__NO_CLASS_TEMPLATE_SPECIALIZATION
0419 # endif
0420 # if _MSC_VER <= 1800
0421 # define R__NO_ATOMIC_FUNCTION_POINTER
0422 # endif
0423 #endif
0424
0425
0426
0427
0428
0429
0430
0431 #ifdef ANSICPP
0432
0433 # define _NAME1_(name) name
0434 # define _NAME2_(name1,name2) name1##name2
0435 # define _NAME3_(name1,name2,name3) name1##name2##name3
0436
0437
0438 # define _QUOTE_(name) #name
0439
0440 #else
0441
0442 # define _NAME1_(name) name
0443 # define _NAME2_(name1,name2) _NAME1_(name1)name2
0444 # define _NAME3_(name1,name2,name3) _NAME2_(name1,name2)name3
0445
0446 # define _QUOTE_(name) "name"
0447
0448 #endif
0449
0450
0451 # define _R__JOIN_(X,Y) _NAME2_(X,Y)
0452 # define _R__JOIN3_(F,X,Y) _NAME3_(F,X,Y)
0453 # define _R__UNIQUE_DICT_(X) _R__JOIN3_(R__DICTIONARY_FILENAME,X,__LINE__)
0454 # define _R__UNIQUE_(X) _R__JOIN_(X,__LINE__)
0455
0456
0457 #if defined(__GNUC__) || defined(__clang__) || defined(__INTEL_COMPILER)
0458 # if (__GNUC__ == 5 && (__GNUC_MINOR__ == 1 || __GNUC_MINOR__ == 2)) || defined(R__NO_DEPRECATION)
0459
0460
0461 # define _R__DEPRECATED_LATER(REASON)
0462 # else
0463 # define _R__DEPRECATED_LATER(REASON) __attribute__((deprecated(REASON)))
0464 # endif
0465 #elif defined(_MSC_VER) && !defined(R__NO_DEPRECATION)
0466 # define _R__DEPRECATED_LATER(REASON) __pragma(deprecated(REASON))
0467 #else
0468
0469 # define _R__DEPRECATED_LATER(REASON)
0470 #endif
0471
0472 #ifdef R__WIN32
0473 #define _R_DEPRECATED_REMOVE_NOW(REASON)
0474 #else
0475 #define _R_DEPRECATED_REMOVE_NOW(REASON) __attribute__((REMOVE_THIS_NOW))
0476 #endif
0477
0478
0479
0480 #if ROOT_VERSION_CODE <= ROOT_VERSION(6,33,0)
0481 # define _R__DEPRECATED_634(REASON) _R__DEPRECATED_LATER(REASON)
0482 #else
0483 # define _R__DEPRECATED_634(REASON) _R_DEPRECATED_REMOVE_NOW(REASON)
0484 #endif
0485
0486
0487
0488 #if ROOT_VERSION_CODE <= ROOT_VERSION(6,35,0)
0489 # define _R__DEPRECATED_636(REASON) _R__DEPRECATED_LATER(REASON)
0490 #else
0491 # define _R__DEPRECATED_636(REASON) _R_DEPRECATED_REMOVE_NOW(REASON)
0492 #endif
0493
0494
0495
0496 #if ROOT_VERSION_CODE < ROOT_VERSION(6,99,0)
0497 # define _R__DEPRECATED_700(REASON) _R__DEPRECATED_LATER(REASON)
0498 #else
0499 # define _R__DEPRECATED_700(REASON) _R_DEPRECATED_REMOVE_NOW(REASON)
0500 #endif
0501
0502
0503
0504 #define R__DEPRECATED(MAJOR, MINOR, REASON) \
0505 _R__JOIN3_(_R__DEPRECATED_,MAJOR,MINOR)("will be removed in ROOT v" #MAJOR "." #MINOR ": " REASON)
0506
0507
0508 #if defined R__SUGGEST_NEW_INTERFACE
0509 # define R__SUGGEST_ALTERNATIVE(ALTERNATIVE) \
0510 _R__DEPRECATED_LATER("There is a superior alternative: " ALTERNATIVE)
0511 #else
0512 # define R__SUGGEST_ALTERNATIVE(ALTERNATIVE)
0513 #endif
0514
0515 #define R__ALWAYS_SUGGEST_ALTERNATIVE(ALTERNATIVE) \
0516 _R__DEPRECATED_LATER("There is a superior alternative: " ALTERNATIVE)
0517
0518
0519
0520
0521
0522 #ifdef R__GNU
0523 # define SafeDelete(p) { if (p) { delete p; p = nullptr; } }
0524 #else
0525 # define SafeDelete(p) { delete p; p = nullptr; }
0526 #endif
0527
0528 #ifdef __FAST_MATH__
0529 #define R__FAST_MATH
0530 #endif
0531
0532 #if (__GNUC__ >= 7)
0533 #define R__DO_PRAGMA(x) _Pragma (#x)
0534 # define R__INTENTIONALLY_UNINIT_BEGIN \
0535 R__DO_PRAGMA(GCC diagnostic push) \
0536 R__DO_PRAGMA(GCC diagnostic ignored "-Wmaybe-uninitialized") \
0537 R__DO_PRAGMA(GCC diagnostic ignored "-Wuninitialized")
0538 # define R__INTENTIONALLY_UNINIT_END \
0539 R__DO_PRAGMA(GCC diagnostic pop)
0540 #else
0541 # define R__INTENTIONALLY_UNINIT_BEGIN
0542 # define R__INTENTIONALLY_UNINIT_END
0543
0544 #endif
0545
0546 #ifdef R__HAS_ATTRIBUTE_ALWAYS_INLINE
0547 #define R__ALWAYS_INLINE inline __attribute__((always_inline))
0548 #else
0549 #if defined(_MSC_VER)
0550 #define R__ALWAYS_INLINE __forceinline
0551 #else
0552 #define R__ALWAYS_INLINE inline
0553 #endif
0554 #endif
0555
0556
0557
0558 #ifdef R__HAS_ATTRIBUTE_NOINLINE
0559 #define R__NEVER_INLINE inline __attribute__((noinline))
0560 #else
0561 #if defined(_MSC_VER)
0562 #define R__NEVER_INLINE inline __declspec(noinline)
0563 #else
0564 #define R__NEVER_INLINE inline
0565 #endif
0566 #endif
0567
0568
0569
0570
0571
0572
0573
0574
0575
0576
0577
0578 #if (__GNUC__ >= 3) || defined(__INTEL_COMPILER)
0579 #if !defined(R__unlikely)
0580 #define R__unlikely(expr) __builtin_expect(!!(expr), 0)
0581 #endif
0582 #if !defined(R__likely)
0583 #define R__likely(expr) __builtin_expect(!!(expr), 1)
0584 #endif
0585 #else
0586 #define R__unlikely(expr) expr
0587 #define R__likely(expr) expr
0588 #endif
0589
0590
0591
0592
0593 #ifndef R__TRACK_BASKET_ALLOC_TIME
0594
0595 #endif
0596
0597 #endif