1 /* include/llvm/Config/config.h. Generated from config.h.in by configure. */ 2 /* include/llvm/Config/config.h.in. Generated from autoconf/configure.ac by autoheader. */ 3 4 #ifndef CONFIG_H 5 #define CONFIG_H 6 7 /* Bug report url */ 8 #define BUG_REPORT_URL "http://llvm.org/bugs/" 9 10 /* Relative directory for resource files */ 11 #define CLANG_RESOURCE_DIR "" 12 13 /* 32 bit multilib directory. */ 14 #define CXX_INCLUDE_32BIT_DIR "" 15 16 /* 64 bit multilib directory. */ 17 #define CXX_INCLUDE_64BIT_DIR "" 18 19 /* Arch the libstdc++ headers. */ 20 #define CXX_INCLUDE_ARCH "" 21 22 /* Directory with the libstdc++ headers. */ 23 #define CXX_INCLUDE_ROOT "" 24 25 /* Directories clang will search for headers */ 26 #define C_INCLUDE_DIRS "" 27 28 /* Define if CBE is enabled for printf %a output */ 29 #define ENABLE_CBE_PRINTF_A 1 30 31 /* Define if position independent code is enabled */ 32 #define ENABLE_PIC 1 33 34 /* Define if threads enabled */ 35 #define ENABLE_THREADS 1 36 37 /* Define if timestamp information (e.g., __DATE___) is allowed */ 38 #define ENABLE_TIMESTAMPS 1 39 40 /* Define to 1 if you have the `argz_append' function. */ 41 /* #undef HAVE_ARGZ_APPEND */ 42 43 /* Define to 1 if you have the `argz_create_sep' function. */ 44 /* #undef HAVE_ARGZ_CREATE_SEP */ 45 46 /* Define to 1 if you have the <argz.h> header file. */ 47 /* #undef HAVE_ARGZ_H */ 48 49 /* Define to 1 if you have the `argz_insert' function. */ 50 /* #undef HAVE_ARGZ_INSERT */ 51 52 /* Define to 1 if you have the `argz_next' function. */ 53 /* #undef HAVE_ARGZ_NEXT */ 54 55 /* Define to 1 if you have the `argz_stringify' function. */ 56 /* #undef HAVE_ARGZ_STRINGIFY */ 57 58 /* Define to 1 if you have the <assert.h> header file. */ 59 #define HAVE_ASSERT_H 1 60 61 /* Define to 1 if you have the `bcopy' function. */ 62 /* #undef HAVE_BCOPY */ 63 64 /* Define to 1 if you have the `ceilf' function. */ 65 #define HAVE_CEILF 1 66 67 /* Define if the neat program is available */ 68 /* #undef HAVE_CIRCO */ 69 70 /* Define to 1 if you have the `closedir' function. */ 71 #define HAVE_CLOSEDIR 1 72 73 /* Define to 1 if you have the <CrashReporterClient.h> header file. */ 74 /* #undef HAVE_CRASHREPORTERCLIENT_H */ 75 76 /* Define to 1 if you have the <ctype.h> header file. */ 77 #define HAVE_CTYPE_H 1 78 79 /* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'. 80 */ 81 #define HAVE_DIRENT_H 1 82 83 /* Define if you have the GNU dld library. */ 84 /* #undef HAVE_DLD */ 85 86 /* Define to 1 if you have the <dld.h> header file. */ 87 /* #undef HAVE_DLD_H */ 88 89 /* Define to 1 if you have the `dlerror' function. */ 90 #define HAVE_DLERROR 1 91 92 /* Define to 1 if you have the <dlfcn.h> header file. */ 93 #define HAVE_DLFCN_H 1 94 95 /* Define if dlopen() is available on this platform. */ 96 #define HAVE_DLOPEN 1 97 98 /* Define to 1 if you have the <dl.h> header file. */ 99 /* #undef HAVE_DL_H */ 100 101 /* Define if the dot program is available */ 102 /* #undef HAVE_DOT */ 103 104 /* Define if the dotty program is available */ 105 /* #undef HAVE_DOTTY */ 106 107 /* Define if you have the _dyld_func_lookup function. */ 108 /* #undef HAVE_DYLD */ 109 110 /* Define to 1 if you have the <errno.h> header file. */ 111 #define HAVE_ERRNO_H 1 112 113 /* Define to 1 if the system has the type `error_t'. */ 114 /* #undef HAVE_ERROR_T */ 115 116 /* Define to 1 if you have the <execinfo.h> header file. */ 117 #define HAVE_EXECINFO_H 1 118 119 /* Define to 1 if you have the <fcntl.h> header file. */ 120 #define HAVE_FCNTL_H 1 121 122 /* Define if the neat program is available */ 123 /* #undef HAVE_FDP */ 124 125 /* Define if libffi is available on this platform. */ 126 /* #undef HAVE_FFI_CALL */ 127 128 /* Define to 1 if you have the <ffi/ffi.h> header file. */ 129 /* #undef HAVE_FFI_FFI_H */ 130 131 /* Define to 1 if you have the <ffi.h> header file. */ 132 /* #undef HAVE_FFI_H */ 133 134 /* Set to 1 if the finite function is found in <ieeefp.h> */ 135 /* #undef HAVE_FINITE_IN_IEEEFP_H */ 136 137 /* Define to 1 if you have the `floorf' function. */ 138 #define HAVE_FLOORF 1 139 140 /* Define to 1 if you have the `fmodf' function. */ 141 #define HAVE_FMODF 1 142 143 /* Define to 1 if you have the `getcwd' function. */ 144 #define HAVE_GETCWD 1 145 146 /* Define to 1 if you have the `getpagesize' function. */ 147 #define HAVE_GETPAGESIZE 1 148 149 /* Define to 1 if you have the `getrlimit' function. */ 150 #define HAVE_GETRLIMIT 1 151 152 /* Define to 1 if you have the `getrusage' function. */ 153 #define HAVE_GETRUSAGE 1 154 155 /* Define to 1 if you have the `gettimeofday' function. */ 156 #define HAVE_GETTIMEOFDAY 1 157 158 /* Define if the Graphviz program is available */ 159 /* #undef HAVE_GRAPHVIZ */ 160 161 /* Define if the gv program is available */ 162 /* #undef HAVE_GV */ 163 164 /* Define to 1 if you have the `index' function. */ 165 /* #undef HAVE_INDEX */ 166 167 /* Define to 1 if the system has the type `int64_t'. */ 168 #define HAVE_INT64_T 1 169 170 /* Define to 1 if you have the <inttypes.h> header file. */ 171 #define HAVE_INTTYPES_H 1 172 173 /* Define to 1 if you have the `isatty' function. */ 174 #define HAVE_ISATTY 1 175 176 /* Set to 1 if the isinf function is found in <cmath> */ 177 /* #undef HAVE_ISINF_IN_CMATH */ 178 179 /* Set to 1 if the isinf function is found in <math.h> */ 180 #define HAVE_ISINF_IN_MATH_H 1 181 182 /* Set to 1 if the isnan function is found in <cmath> */ 183 /* #undef HAVE_ISNAN_IN_CMATH */ 184 185 /* Set to 1 if the isnan function is found in <math.h> */ 186 #define HAVE_ISNAN_IN_MATH_H 1 187 188 /* Define if you have the libdl library or equivalent. */ 189 #define HAVE_LIBDL 1 190 191 /* Define to 1 if you have the `m' library (-lm). */ 192 #define HAVE_LIBM 1 193 194 /* Define to 1 if you have the `udis86' library (-ludis86). */ 195 /* #undef HAVE_LIBUDIS86 */ 196 197 /* Define to 1 if you have the <limits.h> header file. */ 198 #define HAVE_LIMITS_H 1 199 200 /* Define if you can use -Wl,-export-dynamic. */ 201 /* #undef HAVE_LINK_EXPORT_DYNAMIC */ 202 203 /* Define to 1 if you have the <link.h> header file. */ 204 /* #undef HAVE_LINK_H */ 205 206 /* Define if you can use -Wl,-R. to pass -R. to the linker, in order to add 207 the current directory to the dynamic linker search path. */ 208 /* #undef HAVE_LINK_R */ 209 210 /* Define to 1 if you have the `longjmp' function. */ 211 #define HAVE_LONGJMP 1 212 213 /* Define to 1 if you have the <mach/mach.h> header file. */ 214 /* #undef HAVE_MACH_MACH_H */ 215 216 /* Define to 1 if you have the <mach-o/dyld.h> header file. */ 217 /* #undef HAVE_MACH_O_DYLD_H */ 218 219 /* Define if mallinfo() is available on this platform. */ 220 /* #undef HAVE_MALLINFO */ 221 222 /* Define to 1 if you have the <malloc/malloc.h> header file. */ 223 /* #undef HAVE_MALLOC_MALLOC_H */ 224 225 /* Define to 1 if you have the `malloc_zone_statistics' function. */ 226 /* #undef HAVE_MALLOC_ZONE_STATISTICS */ 227 228 /* Define to 1 if you have the `memcpy' function. */ 229 #define HAVE_MEMCPY 1 230 231 /* Define to 1 if you have the `memmove' function. */ 232 #define HAVE_MEMMOVE 1 233 234 /* Define to 1 if you have the <memory.h> header file. */ 235 #define HAVE_MEMORY_H 1 236 237 /* Define to 1 if you have the `mkdtemp' function. */ 238 #define HAVE_MKDTEMP 1 239 240 /* Define to 1 if you have the `mkstemp' function. */ 241 #define HAVE_MKSTEMP 1 242 243 /* Define to 1 if you have the `mktemp' function. */ 244 #define HAVE_MKTEMP 1 245 246 /* Define to 1 if you have a working `mmap' system call. */ 247 #define HAVE_MMAP 1 248 249 /* Define if mmap() uses MAP_ANONYMOUS to map anonymous pages, or undefine if 250 it uses MAP_ANON */ 251 /* #undef HAVE_MMAP_ANONYMOUS */ 252 253 /* Define if mmap() can map files into memory */ 254 #define HAVE_MMAP_FILE 255 256 /* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */ 257 /* #undef HAVE_NDIR_H */ 258 259 /* Define to 1 if you have the `nearbyintf' function. */ 260 #define HAVE_NEARBYINTF 1 261 262 /* Define if the neat program is available */ 263 /* #undef HAVE_NEATO */ 264 265 /* Define to 1 if you have the `opendir' function. */ 266 #define HAVE_OPENDIR 1 267 268 /* Define to 1 if you have the `posix_spawn' function. */ 269 /*#define HAVE_POSIX_SPAWN 1*/ 270 271 /* Define to 1 if you have the `powf' function. */ 272 #define HAVE_POWF 1 273 274 /* Define if libtool can extract symbol lists from object files. */ 275 #define HAVE_PRELOADED_SYMBOLS 1 276 277 /* Define to have the %a format string */ 278 #define HAVE_PRINTF_A 1 279 280 #ifndef USE_MINGW 281 /* Define to 1 if you have the `pthread' library (-lpthread). */ 282 #define HAVE_LIBPTHREAD 1 283 284 /* Have pthread_getspecific */ 285 #define HAVE_PTHREAD_GETSPECIFIC 1 286 287 /* Define to 1 if you have the <pthread.h> header file. */ 288 #define HAVE_PTHREAD_H 1 289 290 /* Have pthread_mutex_lock */ 291 #define HAVE_PTHREAD_MUTEX_LOCK 1 292 293 /* Have pthread_rwlock_init */ 294 #define HAVE_PTHREAD_RWLOCK_INIT 1 295 #endif /* not USE_MINGW */ 296 297 /* Define to 1 if srand48/lrand48/drand48 exist in <stdlib.h> */ 298 #define HAVE_RAND48 1 299 300 /* Define to 1 if you have the `readdir' function. */ 301 #define HAVE_READDIR 1 302 303 /* Define to 1 if you have the `realpath' function. */ 304 #define HAVE_REALPATH 1 305 306 /* Define to 1 if you have the `rindex' function. */ 307 /* #undef HAVE_RINDEX */ 308 309 /* Define to 1 if you have the `rintf' function. */ 310 #define HAVE_RINTF 1 311 312 /* Define to 1 if you have the `round' function. */ 313 #define HAVE_ROUND 1 314 315 /* Define to 1 if you have the `roundf' function. */ 316 #define HAVE_ROUNDF 1 317 318 /* Define to 1 if you have the `sbrk' function. */ 319 #define HAVE_SBRK 1 320 321 /* Define to 1 if you have the `setenv' function. */ 322 #define HAVE_SETENV 1 323 324 /* Define to 1 if you have the `setjmp' function. */ 325 #define HAVE_SETJMP 1 326 327 /* Define to 1 if you have the <setjmp.h> header file. */ 328 #define HAVE_SETJMP_H 1 329 330 /* Define to 1 if you have the `setrlimit' function. */ 331 #define HAVE_SETRLIMIT 1 332 333 /* Define if you have the shl_load function. */ 334 /* #undef HAVE_SHL_LOAD */ 335 336 /* Define to 1 if you have the `siglongjmp' function. */ 337 #define HAVE_SIGLONGJMP 1 338 339 /* Define to 1 if you have the <signal.h> header file. */ 340 #define HAVE_SIGNAL_H 1 341 342 /* Define to 1 if you have the `sigsetjmp' function. */ 343 /* #undef HAVE_SIGSETJMP */ 344 345 /* Define to 1 if you have the <stdint.h> header file. */ 346 #define HAVE_STDINT_H 1 347 348 /* Define to 1 if you have the <stdio.h> header file. */ 349 #define HAVE_STDIO_H 1 350 351 /* Define to 1 if you have the <stdlib.h> header file. */ 352 #define HAVE_STDLIB_H 1 353 354 /* Set to 1 if the std::isinf function is found in <cmath> */ 355 /* #undef HAVE_STD_ISINF_IN_CMATH */ 356 357 /* Set to 1 if the std::isnan function is found in <cmath> */ 358 #define HAVE_STD_ISNAN_IN_CMATH 1 359 360 /* Define to 1 if you have the `strchr' function. */ 361 #define HAVE_STRCHR 1 362 363 /* Define to 1 if you have the `strcmp' function. */ 364 #define HAVE_STRCMP 1 365 366 /* Define to 1 if you have the `strdup' function. */ 367 #define HAVE_STRDUP 1 368 369 /* Define to 1 if you have the `strerror' function. */ 370 #define HAVE_STRERROR 1 371 372 /* Define to 1 if you have the `strerror_r' function. */ 373 #ifndef USE_MINGW 374 #define HAVE_STRERROR_R 1 375 #endif 376 377 /* Define to 1 if you have the `strerror_s' function. */ 378 /* #undef HAVE_STRERROR_S */ 379 380 /* Define to 1 if you have the <strings.h> header file. */ 381 #define HAVE_STRINGS_H 1 382 383 /* Define to 1 if you have the <string.h> header file. */ 384 #define HAVE_STRING_H 1 385 386 /* Define to 1 if you have the `strrchr' function. */ 387 #define HAVE_STRRCHR 1 388 389 /* Define to 1 if you have the `strtof' function. */ 390 #define HAVE_STRTOF 1 391 392 /* Define to 1 if you have the `strtoll' function. */ 393 #define HAVE_STRTOLL 1 394 395 /* Define to 1 if you have the `strtoq' function. */ 396 #define HAVE_STRTOQ 1 397 398 /* Define to 1 if you have the `sysconf' function. */ 399 #define HAVE_SYSCONF 1 400 401 /* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'. 402 */ 403 /* #undef HAVE_SYS_DIR_H */ 404 405 /* Define to 1 if you have the <sys/dl.h> header file. */ 406 /* #undef HAVE_SYS_DL_H */ 407 408 /* Define to 1 if you have the <sys/ioctl.h> header file. */ 409 #define HAVE_SYS_IOCTL_H 1 410 411 /* Define to 1 if you have the <sys/mman.h> header file. */ 412 #define HAVE_SYS_MMAN_H 1 413 414 /* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'. 415 */ 416 /* #undef HAVE_SYS_NDIR_H */ 417 418 /* Define to 1 if you have the <sys/param.h> header file. */ 419 #define HAVE_SYS_PARAM_H 1 420 421 /* Define to 1 if you have the <sys/resource.h> header file. */ 422 #define HAVE_SYS_RESOURCE_H 1 423 424 /* Define to 1 if you have the <sys/stat.h> header file. */ 425 #define HAVE_SYS_STAT_H 1 426 427 /* Define to 1 if you have the <sys/time.h> header file. */ 428 #define HAVE_SYS_TIME_H 1 429 430 /* Define to 1 if you have the <sys/types.h> header file. */ 431 #define HAVE_SYS_TYPES_H 1 432 433 /* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */ 434 #define HAVE_SYS_WAIT_H 1 435 436 /* Define to 1 if you have the <termios.h> header file. */ 437 #define HAVE_TERMIOS_H 1 438 439 /* Define if the neat program is available */ 440 /* #undef HAVE_TWOPI */ 441 442 /* Define to 1 if the system has the type `uint64_t'. */ 443 #define HAVE_UINT64_T 1 444 445 /* Define to 1 if you have the <unistd.h> header file. */ 446 #define HAVE_UNISTD_H 1 447 448 /* Define to 1 if you have the <utime.h> header file. */ 449 #define HAVE_UTIME_H 1 450 451 /* Define to 1 if the system has the type `u_int64_t'. */ 452 /* #undef HAVE_U_INT64_T */ 453 454 /* Define to 1 if you have the `__dso_handle' function. */ 455 #define HAVE___DSO_HANDLE 1 456 457 /* Linker version detected at compile time. */ 458 /* #undef HOST_LINK_VERSION */ 459 460 /* Installation directory for binary executables */ 461 #define LLVM_BINDIR "/usr/local/google/llvm/bin" 462 463 /* Time at which LLVM was configured */ 464 #define LLVM_CONFIGTIME "Tue Apr 27 18:30:43 CST 2010" 465 466 /* Installation directory for data files */ 467 #define LLVM_DATADIR "/usr/local/google/llvm/share/llvm" 468 469 /* Installation directory for documentation */ 470 #define LLVM_DOCSDIR "/usr/local/google/llvm/docs/llvm" 471 472 /* Installation directory for config files */ 473 #define LLVM_ETCDIR "/usr/local/google/llvm/etc/llvm" 474 475 /* Host triple we were built on */ 476 #define LLVM_DEFAULT_TARGET_TRIPLE "i386-unknown-linux" 477 478 /* Installation directory for include files */ 479 #define LLVM_INCLUDEDIR "/usr/local/google/llvm/include" 480 481 /* Installation directory for .info files */ 482 #define LLVM_INFODIR "/usr/local/google/llvm/info" 483 484 /* Installation directory for libraries */ 485 #define LLVM_LIBDIR "/usr/local/google/llvm/lib" 486 487 /* Installation directory for man pages */ 488 #define LLVM_MANDIR "/usr/local/google/llvm/man" 489 490 /* Build multithreading support into LLVM */ 491 #define LLVM_MULTITHREADED 0 492 493 /* LLVM architecture name for the native architecture, if available */ 494 #define LLVM_NATIVE_ARCH X86Target 495 496 /* Short LLVM architecture name for the native architecture, if available */ 497 #define LLVM_NATIVE_ARCHNAME X86 498 499 #ifdef USE_MINGW 500 /* Define if this is Win32ish platform */ 501 #define LLVM_ON_WIN32 1 502 503 /* Define to 1 if you have the <windows.h> header file. */ 504 #define HAVE_WINDOWS_H 1 505 506 /* Define to 1 if you have the `psapi' library (-lpsapi). */ 507 #define HAVE_LIBPSAPI 1 508 509 /* Define to 1 if you have the `imagehlp' library (-limagehlp). */ 510 #define HAVE_LIBIMAGEHLP 1 511 512 #else /* not USE_MINGW */ 513 514 /* Define if this is Unixish platform */ 515 #define LLVM_ON_UNIX 1 516 517 #endif 518 519 520 /* Define to path to circo program if found or 'echo circo' otherwise */ 521 /* #undef LLVM_PATH_CIRCO */ 522 523 /* Define to path to dot program if found or 'echo dot' otherwise */ 524 /* #undef LLVM_PATH_DOT */ 525 526 /* Define to path to dotty program if found or 'echo dotty' otherwise */ 527 /* #undef LLVM_PATH_DOTTY */ 528 529 /* Define to path to fdp program if found or 'echo fdp' otherwise */ 530 /* #undef LLVM_PATH_FDP */ 531 532 /* Define to path to Graphviz program if found or 'echo Graphviz' otherwise */ 533 /* #undef LLVM_PATH_GRAPHVIZ */ 534 535 /* Define to path to gv program if found or 'echo gv' otherwise */ 536 /* #undef LLVM_PATH_GV */ 537 538 /* Define to path to neato program if found or 'echo neato' otherwise */ 539 /* #undef LLVM_PATH_NEATO */ 540 541 /* Define to path to twopi program if found or 'echo twopi' otherwise */ 542 /* #undef LLVM_PATH_TWOPI */ 543 544 /* Installation prefix directory */ 545 #define LLVM_PREFIX "/usr/local/google/llvm" 546 547 /* Define if the OS needs help to load dependent libraries for dlopen(). */ 548 /* #undef LTDL_DLOPEN_DEPLIBS */ 549 550 /* Define to the sub-directory in which libtool stores uninstalled libraries. 551 */ 552 #define LTDL_OBJDIR ".libs/" 553 554 /* Define to the name of the environment variable that determines the dynamic 555 library search path. */ 556 #define LTDL_SHLIBPATH_VAR "LD_LIBRARY_PATH" 557 558 /* Define to the extension used for shared libraries, say, ".so". */ 559 #define LTDL_SHLIB_EXT ".so" 560 561 /* Define to the system default library search path. */ 562 #define LTDL_SYSSEARCHPATH "/lib:/usr/lib:/usr/local/lib:/lib:/usr/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib32:/usr/lib32:/usr/local/lib32:/usr/x86_64-pc-linux-gnu/lib:/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.4:/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.4/32:/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2:/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/32" 563 564 /* Define if /dev/zero should be used when mapping RWX memory, or undefine if 565 its not necessary */ 566 /* #undef NEED_DEV_ZERO_FOR_MMAP */ 567 568 /* Define if dlsym() requires a leading underscore in symbol names. */ 569 /* #undef NEED_USCORE */ 570 571 /* Define to the address where bug reports for this package should be sent. */ 572 #define PACKAGE_BUGREPORT "llvmbugs (at) cs.uiuc.edu" 573 574 /* Define to the full name of this package. */ 575 #define PACKAGE_NAME "llvm" 576 577 /* Define to the full name and version of this package. */ 578 #define PACKAGE_STRING "llvm 2.8svn" 579 580 /* Define to the one symbol short name of this package. */ 581 #define PACKAGE_TARNAME "-llvm-" 582 583 /* Define to the version of this package. */ 584 #define PACKAGE_VERSION "2.8svn" 585 586 /* Define as the return type of signal handlers (`int' or `void'). */ 587 #define RETSIGTYPE void 588 589 /* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */ 590 /* #undef STAT_MACROS_BROKEN */ 591 592 /* Define to 1 if you have the ANSI C header files. */ 593 #define STDC_HEADERS 1 594 595 /* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */ 596 #define TIME_WITH_SYS_TIME 1 597 598 /* Define to 1 if your <sys/time.h> declares `struct tm'. */ 599 /* #undef TM_IN_SYS_TIME */ 600 601 /* Define if we have the oprofile JIT-support library */ 602 #define USE_OPROFILE 0 603 604 /* Define if use udis86 library */ 605 #define USE_UDIS86 0 606 607 /* Define use of PSTR type for Windows platforms */ 608 #define WIN32_ELMCB_PCSTR PSTR 609 610 /* Define to empty if `const' does not conform to ANSI C. */ 611 /* #undef const */ 612 613 /* Define to a type to use for `error_t' if it is not otherwise available. */ 614 /* #undef error_t */ 615 616 /* Define to `int' if <sys/types.h> does not define. */ 617 /* #undef pid_t */ 618 619 /* Define to `unsigned int' if <sys/types.h> does not define. */ 620 /* #undef size_t */ 621 622 #endif 623 624