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