xapian-core  2.1.0
config.h
Go to the documentation of this file.
1 /* config.h. Generated from config.h.in by configure. */
2 /* config.h.in. Generated from configure.ac by autoheader. */
3 
4 /* Define if building universal (internal helper macro) */
5 /* #undef AC_APPLE_UNIVERSAL_BUILD */
6 
7 /* directory separator(s) as a character or string literal */
8 #define DIR_SEPS '/'
9 
10 /* directory separator(s) as an initialiser list */
11 #define DIR_SEPS_LIST { '/' }
12 
13 /* Define to error out if we try to include GPL code in libxapian */
14 /* #undef DISABLE_GPL_LIBXAPIAN */
15 
16 /* Define to use flock() for flint-compatible locking */
17 /* #undef FLINTLOCK_USE_FLOCK */
18 
19 /* Defined if system uses ieee format to store floating point numbers */
20 #define FOLLOWS_IEEE 1
21 
22 /* Define to 1 if '-D_FORTIFY_SOURCE=2' link test passes */
23 #define FORTIFY_SOURCE_OK 1
24 
25 /* Define if ftime returns void */
26 /* #undef FTIME_RETURNS_VOID */
27 
28 /* Define to 1 if you have the `arc4random' function. */
29 /* #undef HAVE_ARC4RANDOM */
30 
31 /* Define to 1 if you have the `arc4random_buf' function. */
32 /* #undef HAVE_ARC4RANDOM_BUF */
33 
34 /* Define to 1 if you have the `clock_gettime' function. */
35 #define HAVE_CLOCK_GETTIME 1
36 
37 /* Define to 1 if you have the `closefrom' function. */
38 /* #undef HAVE_CLOSEFROM */
39 
40 /* Define to 1 if you have the `close_range' function. */
41 /* #undef HAVE_CLOSE_RANGE */
42 
43 /* define if the compiler supports basic C++17 syntax */
44 #define HAVE_CXX17 1
45 
46 /* define if the compiler supports basic C++20 syntax */
47 /* #undef HAVE_CXX20 */
48 
49 /* define if the compiler supports basic C++23 syntax */
50 /* #undef HAVE_CXX23 */
51 
52 /* Define to 1 if you have the <cxxabi.h> header file. */
53 #define HAVE_CXXABI_H 1
54 
55 /* Define to 1 if you have the declaration of `exp10(double)', and to 0 if you
56  don't. */
57 #define HAVE_DECL_EXP10 1
58 
59 /* Define to 1 if you have the declaration of `siglongjmp', and to 0 if you
60  don't. */
61 #define HAVE_DECL_SIGLONGJMP 1
62 
63 /* Define to 1 if you have the declaration of `sigsetjmp', and to 0 if you
64  don't. */
65 #define HAVE_DECL_SIGSETJMP 1
66 
67 /* Define to 1 if you have the declaration of `strerror_r', and to 0 if you
68  don't. */
69 #define HAVE_DECL_STRERROR_R 1
70 
71 /* Define to 1 if you have the declaration of `_addcarry_u32(unsigned char,
72  unsigned, unsigned, unsigned*)', and to 0 if you don't. */
73 #define HAVE_DECL__ADDCARRY_U32 0
74 
75 /* Define to 1 if you have the declaration of `_addcarry_u64(unsigned char,
76  unsigned __int64, unsigned __int64, unsigned __int64*)', and to 0 if you
77  don't. */
78 #define HAVE_DECL__ADDCARRY_U64 0
79 
80 /* Define to 1 if you have the declaration of `_byteswap_uint64', and to 0 if
81  you don't. */
82 #define HAVE_DECL__BYTESWAP_UINT64 0
83 
84 /* Define to 1 if you have the declaration of `_byteswap_ulong', and to 0 if
85  you don't. */
86 #define HAVE_DECL__BYTESWAP_ULONG 0
87 
88 /* Define to 1 if you have the declaration of `_byteswap_ushort', and to 0 if
89  you don't. */
90 #define HAVE_DECL__BYTESWAP_USHORT 0
91 
92 /* Define to 1 if you have the declaration of `_putenv_s(const char*, const
93  char*)', and to 0 if you don't. */
94 #define HAVE_DECL__PUTENV_S 0
95 
96 /* Define to 1 if you have the declaration of `_subborrow_u32(unsigned char,
97  unsigned, unsigned, unsigned*)', and to 0 if you don't. */
98 #define HAVE_DECL__SUBBORROW_U32 0
99 
100 /* Define to 1 if you have the declaration of `_subborrow_u64(unsigned char,
101  unsigned __int64, unsigned __int64, unsigned __int64*)', and to 0 if you
102  don't. */
103 #define HAVE_DECL__SUBBORROW_U64 0
104 
105 /* Define to 1 if you have the declaration of `__builtin_add_overflow(int,
106  int, int*)', and to 0 if you don't. */
107 #define HAVE_DECL___BUILTIN_ADD_OVERFLOW 1
108 
109 /* Define to 1 if you have the declaration of `__builtin_bswap16(uint16_t)',
110  and to 0 if you don't. */
111 #define HAVE_DECL___BUILTIN_BSWAP16 1
112 
113 /* Define to 1 if you have the declaration of `__builtin_bswap32(uint32_t)',
114  and to 0 if you don't. */
115 #define HAVE_DECL___BUILTIN_BSWAP32 1
116 
117 /* Define to 1 if you have the declaration of `__builtin_bswap64(uint64_t)',
118  and to 0 if you don't. */
119 #define HAVE_DECL___BUILTIN_BSWAP64 1
120 
121 /* Define to 1 if you have the declaration of `__builtin_clz(unsigned)', and
122  to 0 if you don't. */
123 #define HAVE_DECL___BUILTIN_CLZ 1
124 
125 /* Define to 1 if you have the declaration of `__builtin_clzl(unsigned long)',
126  and to 0 if you don't. */
127 #define HAVE_DECL___BUILTIN_CLZL 1
128 
129 /* Define to 1 if you have the declaration of `__builtin_clzll(unsigned long
130  long)', and to 0 if you don't. */
131 #define HAVE_DECL___BUILTIN_CLZLL 1
132 
133 /* Define to 1 if you have the declaration of `__builtin_ctz(unsigned)', and
134  to 0 if you don't. */
135 #define HAVE_DECL___BUILTIN_CTZ 1
136 
137 /* Define to 1 if you have the declaration of `__builtin_ctzl(unsigned long)',
138  and to 0 if you don't. */
139 #define HAVE_DECL___BUILTIN_CTZL 1
140 
141 /* Define to 1 if you have the declaration of `__builtin_ctzll(unsigned long
142  long)', and to 0 if you don't. */
143 #define HAVE_DECL___BUILTIN_CTZLL 1
144 
145 /* Define to 1 if you have the declaration of `__builtin_expect(long, long)',
146  and to 0 if you don't. */
147 #define HAVE_DECL___BUILTIN_EXPECT 1
148 
149 /* Define to 1 if you have the declaration of `__builtin_ffs(int)', and to 0
150  if you don't. */
151 #define HAVE_DECL___BUILTIN_FFS 1
152 
153 /* Define to 1 if you have the declaration of `__builtin_mul_overflow(int,
154  int, int*)', and to 0 if you don't. */
155 #define HAVE_DECL___BUILTIN_MUL_OVERFLOW 1
156 
157 /* Define to 1 if you have the declaration of `__builtin_popcount(unsigned)',
158  and to 0 if you don't. */
159 #define HAVE_DECL___BUILTIN_POPCOUNT 1
160 
161 /* Define to 1 if you have the declaration of `__builtin_popcountl(unsigned
162  long)', and to 0 if you don't. */
163 #define HAVE_DECL___BUILTIN_POPCOUNTL 1
164 
165 /* Define to 1 if you have the declaration of `__builtin_popcountll(unsigned
166  long long)', and to 0 if you don't. */
167 #define HAVE_DECL___BUILTIN_POPCOUNTLL 1
168 
169 /* Define to 1 if you have the declaration of `__builtin_sub_overflow(int,
170  int, int*)', and to 0 if you don't. */
171 #define HAVE_DECL___BUILTIN_SUB_OVERFLOW 1
172 
173 /* Define to 1 if you have the declaration of `__exp10(double)', and to 0 if
174  you don't. */
175 #define HAVE_DECL___EXP10 1
176 
177 /* Define to 1 if you have the declaration of `__popcnt', and to 0 if you
178  don't. */
179 #define HAVE_DECL___POPCNT 0
180 
181 /* Define to 1 if you have the declaration of `__popcnt64', and to 0 if you
182  don't. */
183 #define HAVE_DECL___POPCNT64 0
184 
185 /* Define to 1 if you have the <dlfcn.h> header file. */
186 #define HAVE_DLFCN_H 1
187 
188 /* Define to 1 if you have the <fcntl.h> header file. */
189 #define HAVE_FCNTL_H 1
190 
191 /* Define to 1 if you have the `fdatasync' function. */
192 #define HAVE_FDATASYNC 1
193 
194 /* Define to 1 if you have the `fork' function. */
195 #define HAVE_FORK 1
196 
197 /* Define to 1 if you have the `fsync' function. */
198 #define HAVE_FSYNC 1
199 
200 /* Define to 1 if you have the `ftime' function. */
201 #define HAVE_FTIME 1
202 
203 /* Define to 1 if you have the `ftruncate' function. */
204 #define HAVE_FTRUNCATE 1
205 
206 /* Define to 1 if you have the `getdirentries' function. */
207 #define HAVE_GETDIRENTRIES 1
208 
209 /* Define to 1 if you have the `getentropy' function. */
210 #define HAVE_GETENTROPY 1
211 
212 /* Define to 1 if you have the `gethostname' function. */
213 #define HAVE_GETHOSTNAME 1
214 
215 /* Define to 1 if you have the `getrlimit' function. */
216 #define HAVE_GETRLIMIT 1
217 
218 /* Define to 1 if you have the `getrusage' function. */
219 #define HAVE_GETRUSAGE 1
220 
221 /* Define to 1 if you have the `gettimeofday' function. */
222 #define HAVE_GETTIMEOFDAY 1
223 
224 /* Define to 1 if you have the <inttypes.h> header file. */
225 #define HAVE_INTTYPES_H 1
226 
227 /* Define to 1 if you have the <limits.h> header file. */
228 #define HAVE_LIMITS_H 1
229 
230 /* Define to 1 if you have the `link' function. */
231 #define HAVE_LINK 1
232 
233 /* Define to 1 if you have the `nanosleep' function. */
234 #define HAVE_NANOSLEEP 1
235 
236 /* Define to 1 if you have the `nftw' function. */
237 #define HAVE_NFTW 1
238 
239 /* Define to 1 if you have the `poll' function. */
240 #define HAVE_POLL 1
241 
242 /* Define to 1 if you have the <poll.h> header file. */
243 #define HAVE_POLL_H 1
244 
245 /* Define to 1 if you have the `posix_fadvise' function. */
246 #define HAVE_POSIX_FADVISE 1
247 
248 /* Define if pread is available on this system */
249 #define HAVE_PREAD 1
250 
251 /* Define if pwrite is available on this system */
252 #define HAVE_PWRITE 1
253 
254 /* Define to 1 if you have the `setenv' function. */
255 #define HAVE_SETENV 1
256 
257 /* Define to 1 if you have the `sigaction' function. */
258 #define HAVE_SIGACTION 1
259 
260 /* Define to 1 if you have the `sleep' function. */
261 #define HAVE_SLEEP 1
262 
263 /* Define to 1 if you have the 'socketpair' function. */
264 #define HAVE_SOCKETPAIR 1
265 
266 /* Define to 1 if you have the <stdint.h> header file. */
267 #define HAVE_STDINT_H 1
268 
269 /* Define to 1 if you have the <stdio.h> header file. */
270 #define HAVE_STDIO_H 1
271 
272 /* Define to 1 if you have the <stdlib.h> header file. */
273 #define HAVE_STDLIB_H 1
274 
275 /* Define if std::from_chars() works for double */
276 /* #undef HAVE_STD_FROM_CHARS_DOUBLE */
277 
278 /* Define to 1 if you have the `strerrordesc_np' function. */
279 /* #undef HAVE_STRERRORDESC_NP */
280 
281 /* Define if you have `strerror_r'. */
282 #define HAVE_STRERROR_R 1
283 
284 /* Define to 1 if you have the <strings.h> header file. */
285 #define HAVE_STRINGS_H 1
286 
287 /* Define to 1 if you have the <string.h> header file. */
288 #define HAVE_STRING_H 1
289 
290 /* Define to 1 if you have the `sysconf' function. */
291 #define HAVE_SYSCONF 1
292 
293 /* Define to 1 if you have the <sysexits.h> header file. */
294 #define HAVE_SYSEXITS_H 1
295 
296 /* Define if you have 'sys_errlist' and 'sys_nerr' */
297 #define HAVE_SYS_ERRLIST_AND_SYS_NERR 1
298 
299 /* Define to 1 if you have the <sys/resource.h> header file. */
300 #define HAVE_SYS_RESOURCE_H 1
301 
302 /* Define to 1 if you have the <sys/select.h> header file. */
303 #define HAVE_SYS_SELECT_H 1
304 
305 /* Define to 1 if you have the <sys/stat.h> header file. */
306 #define HAVE_SYS_STAT_H 1
307 
308 /* Define to 1 if you have the <sys/types.h> header file. */
309 #define HAVE_SYS_TYPES_H 1
310 
311 /* Define to 1 if you have the <sys/uio.h> header file. */
312 #define HAVE_SYS_UIO_H 1
313 
314 /* Define to 1 if you have the <sys/utsname.h> header file. */
315 #define HAVE_SYS_UTSNAME_H 1
316 
317 /* Define to 1 if you have the 'timer_create' function. */
318 #define HAVE_TIMER_CREATE 1
319 
320 /* Define to 1 if you have the `times' function. */
321 #define HAVE_TIMES 1
322 
323 /* Define to 1 if you have the <unistd.h> header file. */
324 #define HAVE_UNISTD_H 1
325 
326 /* Define to 1 if you have the <uuid.h> header file. */
327 /* #undef HAVE_UUID_H */
328 
329 /* Define to 1 if you have the <uuid/uuid.h> header file. */
330 #define HAVE_UUID_UUID_H 1
331 
332 /* Define if a suitable valgrind is installed */
333 #define HAVE_VALGRIND 1
334 
335 /* Define to 1 if you have the <valgrind/memcheck.h> header file. */
336 #define HAVE_VALGRIND_MEMCHECK_H 1
337 
338 /* Define to 1 if you have the `writev' function. */
339 #define HAVE_WRITEV 1
340 
341 /* Define to 1 if you have the <zlib.h> header file. */
342 #define HAVE_ZLIB_H 1
343 
344 /* Define to 1 if you have the `_putenv_s' function. */
345 /* #undef HAVE__PUTENV_S */
346 
347 /* Define if you have '_sys_errlist' and '_sys_nerr' */
348 #define HAVE__SYS_ERRLIST_AND__SYS_NERR 1
349 
350 /* Define to 1 if you have the '__builtin_exp10' function. */
351 #define HAVE___BUILTIN_EXP10 1
352 
353 /* Define to the sub-directory where libtool stores uninstalled libraries. */
354 #define LT_OBJDIR ".libs/"
355 
356 /* Define on mingw to get _s suffixed "secure" functions declared in headers
357  */
358 /* #undef MINGW_HAS_SECURE_API */
359 
360 /* Name of package */
361 #define PACKAGE "xapian-core"
362 
363 /* Define to the address where bug reports for this package should be sent. */
364 #define PACKAGE_BUGREPORT "https://xapian.org/bugs"
365 
366 /* Define to the full name of this package. */
367 #define PACKAGE_NAME "xapian-core"
368 
369 /* Define to the full name and version of this package. */
370 #define PACKAGE_STRING "xapian-core 2.1.0"
371 
372 /* Define to the one symbol short name of this package. */
373 #define PACKAGE_TARNAME "xapian-core"
374 
375 /* Define to the home page for this package. */
376 #define PACKAGE_URL ""
377 
378 /* Define to the version of this package. */
379 #define PACKAGE_VERSION "2.1.0"
380 
381 /* explicit prototype needed for pread (if any) */
382 /* #undef PREAD_PROTOTYPE */
383 
384 /* explicit prototype needed for pwrite (if any) */
385 /* #undef PWRITE_PROTOTYPE */
386 
387 /* The size of `int', as computed by sizeof. */
388 #define SIZEOF_INT 4
389 
390 /* The size of `long', as computed by sizeof. */
391 #define SIZEOF_LONG 8
392 
393 /* The size of `long long', as computed by sizeof. */
394 #define SIZEOF_LONG_LONG 8
395 
396 /* The size of `short', as computed by sizeof. */
397 #define SIZEOF_SHORT 2
398 
399 /* type to use for 5th parameter to getsockopt */
400 #define SOCKLEN_T socklen_t
401 
402 /* Define to 1 if all of the C90 standard headers exist (not just the ones
403  required in a freestanding environment). This macro is provided for
404  backward compatibility; new code need not use it. */
405 #define STDC_HEADERS 1
406 
407 /* Define to 1 if strerror_r returns char *. */
408 #define STRERROR_R_CHAR_P 1
409 
410 /* Define to use ICU to find word breaks */
411 #define USE_ICU 1
412 
413 /* Define to 1 to read UUID from '/proc/sys/kernel/random/uuid' */
414 /* #undef USE_PROC_FOR_UUID */
415 
416 /* Define if the testsuite can use RTTI */
417 #define USE_RTTI 1
418 
419 /* Define to 1 to use UuidCreate(), etc */
420 /* #undef USE_WIN32_UUID_API */
421 
422 /* Version number of package */
423 #define VERSION "2.1.0"
424 
425 /* Version of Windows to assume (0x600 => Vista). */
426 /* #undef WINVER */
427 
428 /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
429  significant byte first (like Motorola and SPARC, unlike Intel). */
430 #if defined AC_APPLE_UNIVERSAL_BUILD
431 # if defined __BIG_ENDIAN__
432 # define WORDS_BIGENDIAN 1
433 # endif
434 #else
435 # ifndef WORDS_BIGENDIAN
436 /* # undef WORDS_BIGENDIAN */
437 # endif
438 #endif
439 
440 /* Define if you want assertions (causes some slow-down) */
441 /* #undef XAPIAN_ASSERTIONS */
442 
443 /* Define if you want paranoid assertions (causes significant slow-down) */
444 /* #undef XAPIAN_ASSERTIONS_PARANOID */
445 
446 /* Define if you want a log of methods called and other debug messages */
447 /* #undef XAPIAN_DEBUG_LOG */
448 
449 /* Number of bits in a file offset, on hosts where this is settable. */
450 /* #undef _FILE_OFFSET_BITS */
451 
452 /* Define for large files, on AIX-style hosts. */
453 /* #undef _LARGE_FILES */
454 
455 /* Version of Windows to assume. */
456 /* #undef _WIN32_WINNT */
457 
458 /* Define to `int' if <sys/types.h> does not define. */
459 /* #undef mode_t */
460 
461 /* Define as a signed integer type capable of holding a process identifier. */
462 /* #undef pid_t */
463 
464 /* Define to `int' if <sys/types.h> does not define. */
465 /* #undef ssize_t */
466 
467 /* Disable stupid MSVC warnings. */
468 #ifdef _MSC_VER
469 /* Passing an empty parameter to a single parameter macro. */
470 # pragma warning(disable:4003)
471 /* Assignment in conditional expression; other compilers suppress with extra parentheses but not MSVC. */
472 # pragma warning(disable:4706)
473 /* A "performance" warning for converting int to bool. */
474 # pragma warning(disable:4800)
475 /* Character in string literal can't be represented in current code page. */
476 # pragma warning(disable:4566)
477 
478 /* POSIX get to deprecate POSIX things, not Microsoft. */
479 # ifndef _CRT_NONSTDC_NO_WARNINGS
480 # define _CRT_NONSTDC_NO_WARNINGS
481 # endif
482 # ifndef _CRT_SECURE_NO_WARNINGS
483 # define _CRT_SECURE_NO_WARNINGS
484 # endif
485 
486 /* WSAAddressToStringA() is deprecated and we should apparently use
487  * WSAAddressToStringW(), but we don't want wide character output so
488  * that would mean we'd have to convert the result back to ASCII
489  * which is a really stupid idea.
490  */
491 # ifndef _WINSOCK_DEPRECATED_NO_WARNINGS
492 # define _WINSOCK_DEPRECATED_NO_WARNINGS
493 # endif
494 
495 /* Tell MSVC we want M_PI, etc defined. */
496 # ifndef _USE_MATH_DEFINES
497 # define _USE_MATH_DEFINES
498 # endif
499 
500 /* Tell MSVC we don't want max() and min() macros defined. */
501 # ifndef NOMINMAX
502 # define NOMINMAX
503 # endif
504 #endif
505 
506 /* Tell zlib to include const in method signatures. Define this in config.h
507  * to ensure it always gets defined before zlib.h is included.
508  */
509 #define ZLIB_CONST
510 
511 /* Make the POSIX-like functions support large files. MSVC needs this;
512  * current mingw32 does too; mingw64 supports _FILE_OFFSET_BITS, which
513  * AC_SYS_LARGEFILE should discover and enable automatically.
514  */
515 #if defined _MSC_VER || \
516  (defined __MINGW32__ && !defined _FILE_OFFSET_BITS)
517 
518 # include <sys/stat.h>
519 # include <sys/types.h>
520 # include <io.h>
521 /* zlib.h uses off_t so we need to include it before we redefine off_t. */
522 # include <zlib.h>
523 
524 // The default stat() and fstat() use 32-bit filesizes and time_t, so we need
525 // to arrange to use 64-bit variants instead.
526 
527 # ifdef stat
528 // Break #undef lines to stop config.status from commenting them out.
529 # undef \
530  stat
531 # endif
532 
533 // This hack is a problem is we ever want a method called "stat".
534 # ifdef _MSC_VER
535 // MSVC needs to call _stat64() instead of stat() and the struct which holds
536 // the information is `struct _stat64` instead of `struct stat` so we just
537 // use #define to replace both in one go.
538 # define stat _stat64
539 # else
540 // Mingw32 has _stat64() but unhelpfully for our purposes, the struct is
541 // called __stat64 (with an extra underscore). We hack around this by
542 // defining stat to __stat64 which sorts out the struct, and then using
543 // a second macro to forward function-like uses of __stat64() to
544 // _stat64().
545 # define stat __stat64
546 # define __stat64(PATH, STATBUF) _stat64((PATH), (STATBUF))
547 # endif
548 
549 // We also want to use _fstat64() instead of fstat() but in this case we can
550 // use a function-like macro, so we could have a method called fstat so long
551 // as it didn't take two parameters.
552 
553 # ifdef fstat
554 // Break #undef lines to stop config.status from commenting them out.
555 # undef \
556  fstat
557 # endif
558 
559 # define fstat(FD, BUF) _fstat64(FD, BUF)
560 
561 # ifdef lseek
562 // Break #undef lines to stop config.status from commenting them out.
563 # undef \
564  lseek
565 # endif
566 
567 # ifdef off_t
568 // Break #undef lines to stop config.status from commenting them out.
569 # undef \
570  off_t
571 # endif
572 
573 # define lseek(FD, OFF, WHENCE) _lseeki64(FD, OFF, WHENCE)
574 /* Redefine via a typedef so C++ code off_t(-1) works - it wouldn't if we did:
575  * #define off_t long long
576  */
577 typedef long long off_t_redefinition_typedef;
578 # define off_t off_t_redefinition_typedef
579 
580 #endif
581 
582 /* MSVC defines _WIN32 but not __WIN32__. */
583 #if !defined __WIN32__ && defined _WIN32
584 # define __WIN32__
585 #endif
586 
587 /* MSVC defines _WIN64 but not __WIN64__. */
588 #if !defined __WIN64__ && defined _WIN64
589 # define __WIN64__
590 #endif
591 
592 /* Default to enabling _FORTIFY_SOURCE at level 2 for GCC-like compilers. It
593  * shouldn't cause a problem to define it where it's not supported.
594  *
595  * The FORTIFY_SOURCE_OK check avoids auto-enabling on some mingw-w64 versions
596  * which required linking with -lssp too. This was addressed in v11.0.0
597  * (released 2023-04-28).
598  *
599  * Check if _FORTIFY_SOURCE is already defined to allow the user to override
600  * our choice with "./configure CPPFLAGS=-D_FORTIFY_SOURCE=0" or "...=1" or
601  * "...=3".
602  */
603 #if defined FORTIFY_SOURCE_OK && !defined _FORTIFY_SOURCE
604 # define _FORTIFY_SOURCE 2
605 #endif
606 
607 /* For compilers which support it (such as GCC, clang, Intel's C++ compiler)
608  * we can use __builtin_expect to give the compiler hints about branch
609  * prediction. See HACKING for how to use these.
610  */
611 #if HAVE_DECL___BUILTIN_EXPECT
612 /* The arguments of __builtin_expect() are both long, so use !! to ensure that
613  * the first argument is always an integer expression, and always 0 or 1, but
614  * still has the same truth value for the if or while it is used in.
615  */
616 # define rare(COND) __builtin_expect(!!(COND), 0)
617 # define usual(COND) __builtin_expect(!!(COND), 1)
618 #else
619 # define rare(COND) (COND)
620 # define usual(COND) (COND)
621 #endif
622 
623 /* This macro can be used around expressions which intentionally make use of
624  * unsigned integer overflow (which is defined behaviour, unlike signed integer
625  * overflow) so that we can use UBSan's optional unsigned-integer-overflow
626  * check to find potential bugs where we unintentionally overflow an unsigned
627  * integer.
628  */
629 #ifdef __clang__
630 #define UNSIGNED_OVERFLOW_OK(X) \
631  ([&]() __attribute__((no_sanitize("unsigned-integer-overflow"))) {\
632  return (X);\
633  }())
634 #else
635 # define UNSIGNED_OVERFLOW_OK(X) (X)
636 #endif
637 
638 /* Signal we're building the library so it's OK to include headers such as
639  * xapian/query.h directly.
640  */
641 #define XAPIAN_LIB_BUILD 1
642