dbus/cmake/config.h.cmake

275 lines
7.1 KiB
CMake
Raw Normal View History

/* config.h. Generated by cmake from config.h.cmake */
#ifndef _DBUS_CONFIG_H
#define _DBUS_CONFIG_H
#cmakedefine VERSION "@VERSION@"
/* On Windows, we expect to be using msvcrt.dll-compatible printf
* (%I64u instead of %llu) unless otherwise specified. This must be
* done near the beginning of config.h, before we have included any
* system headers that might check the value of this macro. */
#ifndef __USE_MINGW_ANSI_STDIO
# define __USE_MINGW_ANSI_STDIO 0
#endif
On 32-bit glibc, define _TIME_BITS to 64 if not already defined On older 32-bit architectures such as i386, this redefines time_t to be 64-bit, and correspondingly increases the size of all system data structures that contain a time_t, such as struct timeval and struct stat. This is necessary to allow timestamps beyond January 2038 to be represented; as well as things that obviously deal with timestamps, this affects functions like stat() (and therefore our wrapper _dbus_stat()), which will fail with EOVERFLOW if asked to inspect a file whose correct timestamp does not fit in time_t. In particular, if the modification or access timestamp on /etc/machine-id has somehow been set to a post-2038 time, libdbus will consider the inability to stat() that file to be an installation error, and when using the deprecated dbus_get_local_machine_id(), that can cause third-party i386 software such as the Steam client to crash. Using 64-bit timestamps avoids that failure mode. Using 64-bit timestamps in glibc is an opt-in and not the default, because if done carelessly it can change libraries' ABIs. However, libdbus is careful not to include system headers and system data types in its own headers, with the only exceptions being extremely basic ISO C headers like <stddef.h> and <stdarg.h>; so we can safely do this without it breaking our ABI. This is similar to the reasoning for why commit 96ffc2a0 "configure.ac: support large-file for stat64" was a safe change. This change only affects glibc. Some non-GNU operating system libraries (such as musl) are less concerned with binary backwards compatibility than glibc, and therefore have incompatibly changed their ABI on 32-bit platforms to switch to 64-bit timestamps throughout; no action is needed on those platforms. If other non-GNU OS libraries have taken a route similar to GNU's, then maintainers of those operating systems are welcome to send tested merge requests similar to this one. An extra subtlety here is that _TIME_BITS=64 requires _FILE_OFFSET_BITS=64. In the Meson build, Meson unconditionally enables _FILE_OFFSET_BITS=64 where appropriate, and in the Autotools build, we already had that via AC_SYS_LARGEFILE, but in the CMake build we did not necessarily have this; so we also define _FILE_OFFSET_BITS=64 there if necessary, as a continuation of commit 96ffc2a0 "configure.ac: support large-file for stat64". On newer 32-bit architectures like x32, time_t is always 64-bit and so this has no practical effect. On 64-bit, setting these would have no practical effect, but to minimize risk I'm only doing this for 32-bit architectures. Resolves: https://gitlab.freedesktop.org/dbus/dbus/-/issues/465 Signed-off-by: Simon McVittie <smcv@collabora.com>
2023-08-07 20:19:17 +01:00
#cmakedefine _FILE_OFFSET_BITS @_FILE_OFFSET_BITS@
#cmakedefine _TIME_BITS @_TIME_BITS@
#cmakedefine WORDS_BIGENDIAN
/* Opt-in to modern APIs and thread-safety for Solaris. In the Autotools
* build system we do the equivalent of this by appending to CFLAGS
* in configure.ac */
#ifdef __sun
# define __EXTENSIONS__
# define _POSIX_PTHREAD_SEMANTICS
# define _REENTRANT
# define _XOPEN_SOURCE 500
#endif
#cmakedefine DBUS_DATADIR "@DBUS_DATADIR@"
#cmakedefine DBUS_BINDIR "@DBUS_BINDIR@"
#cmakedefine DBUS_PREFIX "@DBUS_PREFIX@"
#cmakedefine DBUS_SYSTEM_CONFIG_FILE "@DBUS_SYSTEM_CONFIG_FILE@"
#cmakedefine DBUS_SESSION_CONFIG_FILE "@DBUS_SESSION_CONFIG_FILE@"
#cmakedefine DBUS_SESSION_SOCKET_DIR "@DBUS_SESSION_SOCKET_DIR@"
#cmakedefine DBUS_DAEMON_NAME "@DBUS_DAEMON_NAME@"
#cmakedefine DBUS_SYSTEM_BUS_DEFAULT_ADDRESS "@DBUS_SYSTEM_BUS_DEFAULT_ADDRESS@"
#cmakedefine DBUS_SESSION_BUS_CONNECT_ADDRESS "@DBUS_SESSION_BUS_CONNECT_ADDRESS@"
#cmakedefine DBUS_MACHINE_UUID_FILE "@DBUS_MACHINE_UUID_FILE@"
2007-06-03 14:15:57 +00:00
#cmakedefine DBUS_DAEMONDIR "@DBUS_DAEMONDIR@"
build: Introduce ${runstatedir} and use it for the pid file By default ${runstatedir} is the same as ${localstatedir}/run, but many Linux distributions configure it to be /run and mount a tmpfs in that location. All other factors being equal, it is preferable to use /run where available because it is guaranteed to be local, whereas traversing /var might involve automounting a networked filesystem (even though /var/run itself is very likely to be a tmpfs). /run or /var/run is currently only used in a few places in dbus, but I plan to make more use of it during the development of <https://bugs.freedesktop.org/show_bug.cgi?id=100344>. The pid file is not part of the API between dbus and other software (other than distribution init scripts for dbus itself), so we do not need to keep it strictly compatible; so it is OK to move it. We do not yet use /run for the system bus socket, because that is part of the API between D-Bus clients and servers, and has always been "officially" /var/run/dbus/system_bus_socket. <https://bugs.freedesktop.org/show_bug.cgi?id=101628> tracks the possibility of changing that. Similarly, we do not replace /var/run/console with /run/console, because that path is part of the API between dbus-daemon and the obsolete PAM modules pam_console and pam_foreground that used /var/run/console. <https://bugs.freedesktop.org/show_bug.cgi?id=101629> tracks the possible future removal of that code path. In the CMake build system, the equivalent of ${runstatedir} remains hard-coded to the equivalent of ${localstatedir}/run for simplicity. For the sort of system-wide installations that would consider redefining ${runstatedir} to /run, the Autotools build system is strongly recommended: in particular this is what Linux distributions are expected to use. Signed-off-by: Simon McVittie <smcv@collabora.com> Reviewed-by: Philip Withnall <withnall@endlessm.com> Bug: https://bugs.freedesktop.org/show_bug.cgi?id=101569
2017-06-20 13:08:06 +01:00
#cmakedefine DBUS_RUNSTATEDIR "@DBUS_RUNSTATEDIR@"
#cmakedefine DBUS_ENABLE_STATS
#cmakedefine ENABLE_TRADITIONAL_ACTIVATION
#define TEST_LISTEN "@TEST_LISTEN@"
// test binaries
#define DBUS_EXEEXT "@EXEEXT@"
/* Some dbus features */
#cmakedefine DBUS_ENABLE_ANSI 1
#cmakedefine DBUS_ENABLE_VERBOSE_MODE 1
#cmakedefine DBUS_DISABLE_ASSERT 1
#ifndef DBUS_DISABLE_ASSERT
# define DBUS_ENABLE_ASSERT 1
#endif
#cmakedefine DBUS_DISABLE_CHECKS 1
#ifndef DBUS_DISABLE_CHECKS
# define DBUS_ENABLE_CHECKS 1
#endif
#cmakedefine DBUS_ENABLE_INTRUSIVE_TESTS 1
#cmakedefine DBUS_ENABLE_MODULAR_TESTS 1
#cmakedefine DBUS_USE_OUTPUT_DEBUG_STRING 1
/* Compatibility with the old name for this functionality */
#ifdef DBUS_ENABLE_INTRUSIVE_TESTS
# define DBUS_ENABLE_EMBEDDED_TESTS 1
#endif
/* xmldocs */
/* doxygen */
#cmakedefine DBUS_GCOV_ENABLED 1
/* selinux */
/* kqueue */
#cmakedefine HAVE_CONSOLE_OWNER_FILE 1
#define DBUS_CONSOLE_OWNER_FILE "@DBUS_CONSOLE_OWNER_FILE@"
#cmakedefine DBUS_BUILD_X11 1
/* For the moment, the cmake build system doesn't have an equivalent of
* the autoconf build system's --disable-x11-autolaunch */
#ifdef DBUS_BUILD_X11
# define DBUS_ENABLE_X11_AUTOLAUNCH 1
#endif
#cmakedefine GLIB_VERSION_MIN_REQUIRED @GLIB_VERSION_MIN_REQUIRED@
#cmakedefine GLIB_VERSION_MAX_ALLOWED @GLIB_VERSION_MAX_ALLOWED@
// headers
#cmakedefine HAVE_AFUNIX_H 1
#cmakedefine HAVE_ALLOCA_H 1
#cmakedefine HAVE_BYTESWAP_H 1
#cmakedefine HAVE_CRT_EXTERNS_H 1
/* Define to 1 if you have dirent.h */
#cmakedefine HAVE_DIRENT_H 1
/* Define to 1 if you have errno.h */
#cmakedefine HAVE_ERRNO_H 1
/* Define to 1 if you have inttypes.h */
#cmakedefine HAVE_INTTYPES_H 1
/* Define to 1 if you have io.h */
#cmakedefine HAVE_IO_H 1
/* Define to 1 if you have locale.h */
#cmakedefine HAVE_LOCALE_H 1
/* Define to 1 if you have poll */
#cmakedefine HAVE_POLL 1
2010-04-14 03:20:44 +02:00
/* Define to 1 if you have signal.h */
#cmakedefine HAVE_SIGNAL_H 1
/* Define to 1 if you have stdio.h */
#cmakedefine HAVE_STDIO_H 1
sysdeps: Use C11 stdatomic.h where possible On Unix, dbus has historically used gcc-specific lock-free atomic intrinsics where available, falling back to a pthreads mutex where possible. Meanwhile, on Windows, it has historically used InterlockedIncrement() and similar library functions (in practice wrappers around lock-free intrinsics on real Windows, but IPC calls into wineserver on Wine). ISO C11 provides a new header, stdatomic.h, with standardized support for atomic operations. Exactly how these are implemented is a compiler quality-of-implementation decision, but any reasonable compiler implementation on a modern CPU should be using intrinsics. Let's use this wherever possible, falling back to our old implementation only if the C11 implementation is unsupported. One concrete benefit that we get from this is that when compiling with mingw-w64 gcc and running via Wine, this makes atomic reference counting operations into a simple local operation, rather than IPC to wineserver which can be very slow. This should make our CI tests considerably more reliable. In all vaguely modern gcc versions (gcc 5.5 or later) and in contemporary versions of clang, the default compiler mode is C11 or later with GNU extensions. We intentionally do not ask for any specific C standard, so we can use C11 features like this one, as long as we do so conditionally. The Microsoft Visual C compiler does not currently support this without special options, so we still use the Interlocked family of functions when compiling for Windows with MSVC. Signed-off-by: Simon McVittie <smcv@collabora.com>
2023-08-14 19:53:11 +01:00
#cmakedefine HAVE_STDATOMIC_H 1
#cmakedefine HAVE_SYSLOG_H 1
#cmakedefine HAVE_SYS_EVENTS_H 1
#cmakedefine HAVE_SYS_INOTIFY_H 1
#cmakedefine HAVE_LINUX_MAGIC_H 1
#cmakedefine HAVE_SYS_PRCTL_H 1
#cmakedefine HAVE_SYS_RANDOM_H 1
#cmakedefine HAVE_SYS_RESOURCE_H 1
#cmakedefine HAVE_SYS_SYSCALL_H 1
#cmakedefine HAVE_SYS_VFS_H 1
/* Define to 1 if you have sys/time.h */
#cmakedefine HAVE_SYS_TIME_H 1
/* Define to 1 if you have unistd.h */
#cmakedefine HAVE_UNISTD_H 1
/* Define to 1 if you have ws2tcpip.h */
#cmakedefine HAVE_WS2TCPIP_H 1
// symbols
/* Define to 1 if you have backtrace */
#cmakedefine HAVE_BACKTRACE 1
/* Define to 1 if you have getgrouplist */
#cmakedefine HAVE_GETGROUPLIST 1
/* Define to 1 if you have getpeerucred */
#cmakedefine HAVE_GETPEERUCRED 1
/* Define to 1 if you have nanosleep */
#cmakedefine HAVE_NANOSLEEP 1
/* Define to 1 if you have getpwnam_r */
#cmakedefine HAVE_GETPWNAM_R 1
/* Define to 1 if you have socketpair */
#cmakedefine HAVE_SOCKETPAIR 1
/* Define to 1 if you have setenv */
#cmakedefine HAVE_SETENV 1
/* Define to 1 if you have unsetenv */
#cmakedefine HAVE_UNSETENV 1
2010-04-13 16:16:27 +02:00
/* Define to 1 if you have clearenv */
#cmakedefine HAVE_CLEARENV 1
/* Define to 1 if you have closefrom */
#cmakedefine HAVE_CLOSEFROM 1
/* Define to 1 if you have close_range */
#cmakedefine HAVE_CLOSE_RANGE 1
/* Define to 1 if you have writev */
#cmakedefine HAVE_WRITEV 1
2007-06-03 14:15:57 +00:00
/* Define to 1 if you have socklen_t */
#cmakedefine HAVE_SOCKLEN_T 1
2010-04-13 16:16:27 +02:00
/* Define to 1 if you have setlocale */
#cmakedefine HAVE_SETLOCALE 1
/* Define to 1 if you have localeconv */
#cmakedefine HAVE_LOCALECONV 1
/* Define to 1 if you have pip2 */
#cmakedefine HAVE_PIPE2 1
#cmakedefine HAVE_ACCEPT4 1
#cmakedefine HAVE_FSTATFS 1
#cmakedefine HAVE_INOTIFY_INIT1 1
#cmakedefine HAVE_GETRANDOM 1
#cmakedefine HAVE_GETRLIMIT 1
#cmakedefine HAVE_PRCTL 1
#cmakedefine HAVE_PRLIMIT 1
#cmakedefine HAVE_RAISE 1
#cmakedefine HAVE_SETRLIMIT 1
#cmakedefine HAVE_UNIX_FD_PASSING 1
#cmakedefine HAVE_SYSTEMD
/* Define to use epoll(4) on Linux */
#cmakedefine DBUS_HAVE_LINUX_EPOLL 1
/* Use the gcc __sync extension */
#cmakedefine01 DBUS_USE_SYNC
#cmakedefine HAVE_SETRESUID 1
#cmakedefine HAVE_GETRESUID 1
/* whether -export-dynamic was passed to libtool */
#cmakedefine DBUS_BUILT_R_DYNAMIC 1
2018-10-16 22:47:18 +02:00
/* Enable GNU extensions on systems that have them. */
#ifndef _GNU_SOURCE
#cmakedefine _GNU_SOURCE 1
#endif
// structs
/* Define to 1 if you have struct cmsgred */
#cmakedefine HAVE_CMSGCRED 1
#cmakedefine FD_SETSIZE @FD_SETSIZE@
#cmakedefine DBUS_USER "@DBUS_USER@"
#cmakedefine DBUS_TEST_USER "@DBUS_TEST_USER@"
#cmakedefine DBUS_TEST_EXEC "@DBUS_TEST_EXEC@"
/* Where to put test sockets */
#define DBUS_TEST_SOCKET_DIR "@TEST_SOCKET_DIR@"
// system type defines
#if defined(_WIN32) || defined(_WIN64) || defined (_WIN32_WCE)
# define DBUS_WIN
# ifdef _WIN32_WCE
# define DBUS_WINCE
# else
# define DBUS_WIN32
/* Define to the minimum supported Windows version (0x0600 is Vista) */
# define _WIN32_WINNT 0x0600
# endif
#else
# define DBUS_UNIX
#endif
#if defined(_WIN32) || defined(_WIN64)
// mingw mode_t
# ifdef HAVE_STDIO_H
# include <stdio.h>
# endif
# ifndef _MSC_VER
# define uid_t int
# define gid_t int
# else
typedef int mode_t;
# endif
#endif // defined(_WIN32) || defined(_WIN64)
#ifdef interface
#undef interface
#endif
#ifndef SIGHUP
#define SIGHUP 1
#endif
#ifdef DBUS_WIN
#define FD_SETSIZE @FD_SETSIZE@
#endif
#cmakedefine01 HAVE_DECL_ENVIRON
#cmakedefine01 HAVE_DECL_LOG_PERROR
#cmakedefine01 HAVE_DECL_MSG_NOSIGNAL
#cmakedefine01 HAVE_DECL_SYS_PIDFD_OPEN
#endif // _DBUS_CONFIG_H