11b5d61b8Smrgversion_split = meson.project_version().split('.') 21b5d61b8Smrgmajor = version_split[0].to_int() 31b5d61b8Smrgminor = version_split[1].to_int() 41b5d61b8Smrgpatch = version_split[2].to_int() 51b5d61b8Smrg 6ed6184dfSmrg# convert to the old-style 1.x.y version scheme used up to 1.20.x for backwards compatibility 7ed6184dfSmrgrelease = 1 * 10000000 + major * 100000 + minor * 1000 + patch 81b5d61b8Smrg 9ed6184dfSmrgdri_dep = dependency('dri', required: build_glx) 101b5d61b8Smrg 111b5d61b8Smrgconf_data = configuration_data() 121b5d61b8Smrgconf_data.set('_DIX_CONFIG_H_', '1') 131b5d61b8Smrg 141b5d61b8Smrgconf_data.set('HAVE_TYPEOF', cc.compiles(''' 151b5d61b8Smrg int foo(int bar) { typeof(bar) baz = 1; return baz; } 161b5d61b8Smrg''', 17ed6184dfSmrg name: 'typeof()') ? '1' : false) 181b5d61b8Smrg 19ed6184dfSmrg# For feature macros we're using either false (boolean) or '1', which correspond to the macro being 20ed6184dfSmrg# not defined at all and defined to 1. This is to match autotools behavior and thus preserve 21ed6184dfSmrg# backwards compatibility with all the existing code that uses #ifdef to check if feature is 22ed6184dfSmrg# enabled. This ifdef would pass if the macro is defined to 0 which would silently break code 23ed6184dfSmrg# in various places. 24ed6184dfSmrg# 25ed6184dfSmrg# As a complication when we read the configuration from conf_data back we get either string or 26ed6184dfSmrg# bool. Meson does not like comparing things of different types so we always convert the returned 27ed6184dfSmrg# value to an integer using to_int(). 28ed6184dfSmrgconf_data.set('MONOTONIC_CLOCK', cc.has_function('clock_gettime') and 29ed6184dfSmrgcc.compiles(''' 301b5d61b8Smrg #define _POSIX_C_SOURCE 200112L 311b5d61b8Smrg #include <time.h> 321b5d61b8Smrg #include <unistd.h> 331b5d61b8Smrg #ifndef CLOCK_MONOTONIC 341b5d61b8Smrg #error CLOCK_MONOTONIC not defined 351b5d61b8Smrg #endif 361b5d61b8Smrg''', 37ed6184dfSmrg name: 'CLOCK_MONOTONIC') ? '1' : false) 381b5d61b8Smrg 39ed6184dfSmrgconf_data.set('XSERVER_DTRACE', with_dtrace ? '1' : false) 401b5d61b8Smrg 411b5d61b8Smrgif host_machine.endian() == 'little' 421b5d61b8Smrg conf_data.set('X_BYTE_ORDER', 'X_LITTLE_ENDIAN') 431b5d61b8Smrgelse 441b5d61b8Smrg conf_data.set('X_BYTE_ORDER', 'X_BIG_ENDIAN') 451b5d61b8Smrgendif 461b5d61b8Smrg 471b5d61b8Smrgglx_align64 = [] 481b5d61b8Smrgif cc.sizeof('unsigned long') == 8 491b5d61b8Smrg conf_data.set('_XSERVER64', '1') 501b5d61b8Smrg glx_align64 = '-D__GLX_ALIGN64' 511b5d61b8Smrgendif 521b5d61b8Smrg 531b5d61b8Smrgconf_data.set('_GNU_SOURCE', '1') 541b5d61b8Smrg 551b5d61b8Smrg# autoconf checks for /dev/xf86 here, but the test should be based on 561b5d61b8Smrg# the target, not the build system. Could we get rid of this and just 571b5d61b8Smrg# ifdef for openbsd? 58ed6184dfSmrgconf_data.set('HAS_APERTURE_DRV', host_machine.system() == 'openbsd' ? '1' : false) 59ed6184dfSmrg 60ed6184dfSmrgif get_option('input_thread') == 'false' 61ed6184dfSmrg enable_input_thread = false 62ed6184dfSmrgelse 63ed6184dfSmrg enable_input_thread = cc.has_header_symbol('pthread.h', 64ed6184dfSmrg 'PTHREAD_MUTEX_RECURSIVE') 65ed6184dfSmrg if not enable_input_thread and get_option('input_thread') == 'true' 66ed6184dfSmrg error('Input thread enabled and PTHREAD_MUTEX_RECURSIVE not found') 67ed6184dfSmrg endif 68ed6184dfSmrg if host_machine.system() == 'windows' and get_option('input_thread') == 'auto' 69ed6184dfSmrg enable_input_thread = false 70ed6184dfSmrg endif 71ed6184dfSmrgendif 72ed6184dfSmrgconf_data.set('INPUTTHREAD', enable_input_thread ? '1' : false) 73ed6184dfSmrg 74ed6184dfSmrgif cc.compiles(''' 75ed6184dfSmrg #define _GNU_SOURCE 1 76ed6184dfSmrg #include <pthread.h> 77ed6184dfSmrg void foo(int bar) { pthread_setname_np(pthread_self(), "example"); } 78ed6184dfSmrg''', 79ed6184dfSmrg args: '-Werror-implicit-function-declaration', 80ed6184dfSmrg name: 'pthread_setname_np(tid, name)') 81ed6184dfSmrg conf_data.set('HAVE_PTHREAD_SETNAME_NP_WITH_TID', 1) 82ed6184dfSmrgelif cc.compiles(''' 83ed6184dfSmrg #define _GNU_SOURCE 1 84ed6184dfSmrg #include <pthread.h> 85ed6184dfSmrg void foo(int bar) { pthread_setname_np("example"); } 86ed6184dfSmrg''', 87ed6184dfSmrg args: '-Werror-implicit-function-declaration', 88ed6184dfSmrg name: 'pthread_setname_np(name)') 89ed6184dfSmrg conf_data.set('HAVE_PTHREAD_SETNAME_NP_WITHOUT_TID', 1) 90ed6184dfSmrgendif 91ed6184dfSmrg 92ed6184dfSmrgconf_data.set('HAVE_LIBBSD', libbsd_dep.found() ? '1' : false) 93ed6184dfSmrg# Note: this symbol is used by libXtrans. 94ed6184dfSmrgconf_data.set('HAVE_SYSTEMD_DAEMON', libsystemd_daemon_dep.found() ? '1' : false) 95ed6184dfSmrgconf_data.set('CONFIG_UDEV', build_udev ? '1' : false) 96ed6184dfSmrgconf_data.set('CONFIG_UDEV_KMS', build_udev_kms ? '1' : false) 97ed6184dfSmrgconf_data.set('HAVE_DBUS', build_dbus ? '1' : false) 98ed6184dfSmrgconf_data.set('CONFIG_HAL', build_hal ? '1' : false) 99ed6184dfSmrgconf_data.set('SYSTEMD_LOGIND', build_systemd_logind ? '1' : false) 100ed6184dfSmrgconf_data.set('NEED_DBUS', build_systemd_logind or build_hal ? '1' : false) 101ed6184dfSmrgconf_data.set('CONFIG_WSCONS', host_machine.system() == 'openbsd' ? '1' : false) 102ed6184dfSmrg 103ed6184dfSmrgconf_data.set('HAVE_XSHMFENCE', xshmfence_dep.found() ? '1' : false) 104ed6184dfSmrgconf_data.set('WITH_LIBDRM', libdrm_required ? '1' : false) 1051b5d61b8Smrgconf_data.set('GLAMOR_HAS_EGL_QUERY_DMABUF', 106ed6184dfSmrg epoxy_dep.found() and epoxy_dep.version().version_compare('>= 1.4.4') ? '1' : false) 1075a7dfde8Smrgconf_data.set('GLAMOR_HAS_EGL_QUERY_DRIVER', 108ed6184dfSmrg epoxy_dep.found() and epoxy_dep.version().version_compare('>= 1.5.4') ? '1' : false) 109ed6184dfSmrgconf_data.set('GLXEXT', build_glx ? '1' : false) 110ed6184dfSmrgconf_data.set('GLAMOR', build_glamor ? '1' : false) 111ed6184dfSmrgconf_data.set('GLAMOR_HAS_GBM', gbm_dep.found() ? '1' : false) 1121b5d61b8Smrgconf_data.set('GLAMOR_HAS_GBM_LINEAR', 113ed6184dfSmrg build_glamor and gbm_dep.found() and gbm_dep.version().version_compare('>= 10.6') ? '1' : false) 1141b5d61b8Smrgconf_data.set('GBM_BO_WITH_MODIFIERS', 115ed6184dfSmrg build_glamor and gbm_dep.found() and gbm_dep.version().version_compare('>= 17.1') ? '1' : false) 1161b5d61b8Smrg 1171b5d61b8Smrgconf_data.set_quoted('SERVER_MISC_CONFIG_PATH', serverconfigdir) 1181b5d61b8Smrgconf_data.set_quoted('PROJECTROOT', get_option('prefix')) 1191b5d61b8Smrgconf_data.set_quoted('SYSCONFDIR', join_paths(get_option('prefix'), get_option('sysconfdir'))) 1201b5d61b8Smrgconf_data.set_quoted('SUID_WRAPPER_DIR', join_paths(get_option('prefix'), get_option('libexecdir'))) 1211b5d61b8Smrgconf_data.set_quoted('COMPILEDDEFAULTFONTPATH', default_font_path) 1221b5d61b8Smrg 1231b5d61b8Smrgconf_data.set('XORG_VERSION_CURRENT', release) 1241b5d61b8Smrg 125ed6184dfSmrgconf_data.set('HASXDMAUTH', has_xdm_auth ? '1' : false) 126ed6184dfSmrgconf_data.set('SECURE_RPC', get_option('secure-rpc') ? '1' : false) 127ed6184dfSmrg 128ed6184dfSmrgconf_data.set('HAVE_DLFCN_H', cc.has_header('dlfcn.h') ? '1' : false) 129ed6184dfSmrgconf_data.set('HAVE_EXECINFO_H', cc.has_header('execinfo.h') ? '1' : false) 130ed6184dfSmrgconf_data.set('HAVE_FCNTL_H', cc.has_header('fcntl.h') ? '1' : false) 131ed6184dfSmrgconf_data.set('HAVE_FNMATCH_H', cc.has_header('fnmatch.h') ? '1' : false) 132ed6184dfSmrgconf_data.set('HAVE_LINUX_AGPGART_H', cc.has_header('linux/agpgart.h') ? '1' : false) 133ed6184dfSmrgconf_data.set('HAVE_STDLIB_H', cc.has_header('stdlib.h') ? '1' : false) 134ed6184dfSmrgconf_data.set('HAVE_STRING_H', cc.has_header('string.h') ? '1' : false) 135ed6184dfSmrgconf_data.set('HAVE_STRINGS_H', cc.has_header('strings.h') ? '1' : false) 136ed6184dfSmrgconf_data.set('HAVE_SYS_AGPGART_H', cc.has_header('sys/agpgart.h') ? '1' : false) 137ed6184dfSmrgconf_data.set('HAVE_SYS_AGPIO_H', cc.has_header('sys/agpio.h') ? '1' : false) 138a1e1cf94Smrgconf_data.set('HAVE_SYS_UN_H', cc.has_header('sys/un.h') ? '1' : false) 139ed6184dfSmrgconf_data.set('HAVE_SYS_UTSNAME_H', cc.has_header('sys/utsname.h') ? '1' : false) 140ed6184dfSmrgconf_data.set('HAVE_SYS_SYSMACROS_H', cc.has_header('sys/sysmacros.h') ? '1' : false) 141ed6184dfSmrgconf_data.set('HAVE_UNISTD_H', cc.has_header('unistd.h') ? '1' : false) 142ed6184dfSmrg 143ed6184dfSmrgconf_data.set('HAVE_ARC4RANDOM_BUF', cc.has_function('arc4random_buf', dependencies: libbsd_dep) ? '1' : false) 144ed6184dfSmrgconf_data.set('HAVE_BACKTRACE', cc.has_function('backtrace') ? '1' : false) 145ed6184dfSmrgconf_data.set('HAVE_CBRT', cc.has_function('cbrt') ? '1' : false) 146ed6184dfSmrgconf_data.set('HAVE_EPOLL_CREATE1', cc.has_function('epoll_create1') ? '1' : false) 147ed6184dfSmrgconf_data.set('HAVE_GETUID', cc.has_function('getuid') ? '1' : false) 148ed6184dfSmrgconf_data.set('HAVE_GETEUID', cc.has_function('geteuid') ? '1' : false) 149ed6184dfSmrgconf_data.set('HAVE_ISASTREAM', cc.has_function('isastream') ? '1' : false) 150ed6184dfSmrgconf_data.set('HAVE_ISSETUGID', cc.has_function('issetugid') ? '1' : false) 151ed6184dfSmrgconf_data.set('HAVE_GETIFADDRS', cc.has_function('getifaddrs') ? '1' : false) 152ed6184dfSmrgconf_data.set('HAVE_GETPEEREID', cc.has_function('getpeereid') ? '1' : false) 153ed6184dfSmrgconf_data.set('HAVE_GETPEERUCRED', cc.has_function('getpeerucred') ? '1' : false) 154ed6184dfSmrgconf_data.set('HAVE_GETPROGNAME', cc.has_function('getprogname') ? '1' : false) 155ed6184dfSmrgconf_data.set('HAVE_GETZONEID', cc.has_function('getzoneid') ? '1' : false) 156ed6184dfSmrgconf_data.set('HAVE_MEMFD_CREATE', cc.has_function('memfd_create') ? '1' : false) 157ed6184dfSmrgconf_data.set('HAVE_MKOSTEMP', cc.has_function('mkostemp') ? '1' : false) 158ed6184dfSmrgconf_data.set('HAVE_MMAP', cc.has_function('mmap') ? '1' : false) 159ed6184dfSmrgconf_data.set('HAVE_POLL', cc.has_function('poll') ? '1' : false) 160ed6184dfSmrgconf_data.set('HAVE_POLLSET_CREATE', cc.has_function('pollset_create') ? '1' : false) 161ed6184dfSmrgconf_data.set('HAVE_POSIX_FALLOCATE', cc.has_function('posix_fallocate') ? '1' : false) 162ed6184dfSmrgconf_data.set('HAVE_PORT_CREATE', cc.has_function('port_create') ? '1' : false) 163ed6184dfSmrgconf_data.set('HAVE_REALLOCARRAY', cc.has_function('reallocarray', dependencies: libbsd_dep) ? '1' : false) 164ed6184dfSmrgconf_data.set('HAVE_SETEUID', cc.has_function('seteuid') ? '1' : false) 165ed6184dfSmrgconf_data.set('HAVE_SETITIMER', cc.has_function('setitimer') ? '1' : false) 166ed6184dfSmrgconf_data.set('HAVE_SHMCTL64', cc.has_function('shmctl64') ? '1' : false) 167ed6184dfSmrgconf_data.set('HAVE_SIGACTION', cc.has_function('sigaction') ? '1' : false) 168ed6184dfSmrgconf_data.set('HAVE_SIGPROCMASK', cc.has_function('sigprocmask') ? '1' : false) 169f2346221Smrg# HAVE_SOCKLEN_T is used by xtrans when IPv6 is disabled 170f2346221Smrgconf_data.set('HAVE_SOCKLEN_T', cc.has_type('socklen_t', prefix: '#include <sys/socket.h>') ? '1' : false) 171ed6184dfSmrgconf_data.set('HAVE_STRCASECMP', cc.has_function('strcasecmp') ? '1' : false) 172ed6184dfSmrgconf_data.set('HAVE_STRCASESTR', cc.has_function('strcasestr') ? '1' : false) 173ed6184dfSmrgconf_data.set('HAVE_STRLCAT', cc.has_function('strlcat', dependencies: libbsd_dep) ? '1' : false) 174ed6184dfSmrgconf_data.set('HAVE_STRLCPY', cc.has_function('strlcpy', dependencies: libbsd_dep) ? '1' : false) 175ed6184dfSmrgconf_data.set('HAVE_STRNCASECMP', cc.has_function('strncasecmp') ? '1' : false) 176ed6184dfSmrgconf_data.set('HAVE_STRNDUP', cc.has_function('strndup') and cc.has_header_symbol('string.h', 'strndup') ? '1' : false) 17754b5899cSmrg# HAVE_STRUCT_SOCKADDR_STORAGE is used by xtrans >= 1.6 17854b5899cSmrgconf_data.set('HAVE_STRUCT_SOCKADDR_STORAGE', cc.has_type('struct sockaddr_storage', prefix: '#include <sys/socket.h>') ? '1' : false) 179ed6184dfSmrgconf_data.set('HAVE_TIMINGSAFE_MEMCMP', cc.has_function('timingsafe_memcmp') ? '1' : false) 180ed6184dfSmrgconf_data.set('HAVE_VASPRINTF', cc.has_function('vasprintf') ? '1' : false) 181ed6184dfSmrgconf_data.set('HAVE_VSNPRINTF', cc.has_function('vsnprintf') ? '1' : false) 182ed6184dfSmrgconf_data.set('HAVE_WALKCONTEXT', cc.has_function('walkcontext') ? '1' : false) 1831b5d61b8Smrg 1841b5d61b8Smrgconf_data.set('BUSFAULT', conf_data.get('HAVE_SIGACTION')) 1851b5d61b8Smrg 1861b5d61b8Smrg# Don't let X dependencies typedef 'pointer' 1871b5d61b8Smrgconf_data.set('_XTYPEDEF_POINTER', '1') 1881b5d61b8Smrgconf_data.set('_XITYPEDEF_POINTER', '1') 1891b5d61b8Smrg 1901b5d61b8Smrgconf_data.set('LISTEN_TCP', get_option('listen_tcp')) 1911b5d61b8Smrgconf_data.set('LISTEN_UNIX', get_option('listen_unix')) 1921b5d61b8Smrgconf_data.set('LISTEN_LOCAL', get_option('listen_local')) 1931b5d61b8Smrg 194ed6184dfSmrgif cc.has_header_symbol('sys/socket.h', 'SCM_RIGHTS') 195ed6184dfSmrg conf_data.set('XTRANS_SEND_FDS', '1') 196ed6184dfSmrgendif 1971b5d61b8Smrg 198ed6184dfSmrgif conf_data.get('HAVE_GETPEEREID').to_int() == 0 and conf_data.get('HAVE_GETPEERUCRED').to_int() == 0 199ed6184dfSmrg if not cc.has_header_symbol('sys/socket.h', 'SO_PEERCRED') 200ed6184dfSmrg conf_data.set('NO_LOCAL_CLIENT_CRED', 1) 201ed6184dfSmrg endif 202ed6184dfSmrgendif 203ed6184dfSmrg 204ed6184dfSmrgconf_data.set('TCPCONN', '1') 205ed6184dfSmrgconf_data.set('UNIXCONN', host_machine.system() != 'windows' ? '1' : false) 206ed6184dfSmrgconf_data.set('IPv6', build_ipv6 ? '1' : false) 2071b5d61b8Smrg 2081b5d61b8Smrgconf_data.set('BIGREQS', '1') 209a1e1cf94Smrgconf_data.set('COMPOSITE', '1') 2101b5d61b8Smrgconf_data.set('DAMAGE', '1') 2111b5d61b8Smrgconf_data.set('DBE', '1') 212ed6184dfSmrgconf_data.set('DGA', build_dga ? '1' : false) 213ed6184dfSmrgconf_data.set('DPMSExtension', build_dpms ? '1' : false) 214ed6184dfSmrgconf_data.set('DRI2', build_dri2 ? '1' : false) 215ed6184dfSmrgconf_data.set('DRI3', build_dri3 ? '1' : false) 216ed6184dfSmrgif build_glx 217ed6184dfSmrg conf_data.set_quoted('DRI_DRIVER_PATH', dri_dep.get_pkgconfig_variable('dridriverdir')) 218ed6184dfSmrgendif 219ed6184dfSmrgconf_data.set('HAS_SHM', build_mitshm ? '1' : false) 220ed6184dfSmrgconf_data.set('MITSHM', build_mitshm ? '1' : false) 221ed6184dfSmrgconf_data.set('PANORAMIX', build_xinerama ? '1' : false) 2221b5d61b8Smrgconf_data.set('PRESENT', '1') 2231b5d61b8Smrgconf_data.set('RANDR', '1') 224ed6184dfSmrgconf_data.set('RES', build_res ? '1' : false) 2251b5d61b8Smrgconf_data.set('RENDER', '1') 226ed6184dfSmrgconf_data.set('SCREENSAVER', build_screensaver ? '1' : false) 2271b5d61b8Smrgconf_data.set('SHAPE', '1') 228ed6184dfSmrgconf_data.set('XACE', build_xace ? '1' : false) 2291b5d61b8Smrgconf_data.set('XCMISC', '1') 230ed6184dfSmrgconf_data.set('XCSECURITY', build_xsecurity ? '1' : false) 231ed6184dfSmrgconf_data.set('XDMCP', xdmcp_dep.found() ? '1' : false) 232ed6184dfSmrgconf_data.set('XF86BIGFONT', build_xf86bigfont ? '1' : false) 233ed6184dfSmrgconf_data.set('XF86DRI', build_dri1 ? '1' : false) 234ed6184dfSmrgconf_data.set('XF86VIDMODE', 1) 2351b5d61b8Smrgconf_data.set('XFIXES', '1') 236ed6184dfSmrgconf_data.set('XFreeXDGA', build_dga ? '1' : false) 237ed6184dfSmrgconf_data.set('XINERAMA', build_xinerama ? '1' : false) 2381b5d61b8Smrgconf_data.set('XINPUT', '1') 2391b5d61b8Smrgconf_data.set('XRECORD', '1') 240ed6184dfSmrgconf_data.set('XSELINUX', build_xselinux ? '1' : false) 2411b5d61b8Smrgconf_data.set('XSYNC', '1') 2421b5d61b8Smrgconf_data.set('XTEST', '1') 243ed6184dfSmrgconf_data.set('XV', build_xv ? '1' : false) 244ed6184dfSmrgconf_data.set('XvExtension', build_xv ? '1' : false) 245ed6184dfSmrgconf_data.set('XvMCExtension', build_xvmc ? '1' : false) 2461b5d61b8Smrg 247ed6184dfSmrgconf_data.set('HAVE_SHA1_IN_' + sha1.to_upper(), '1', description: 'Use @0@ SHA1 functions'.format(sha1)) 248ed6184dfSmrgconf_data.set('HAVE_LIBUNWIND', get_option('libunwind')) 2491b5d61b8Smrg 250ed6184dfSmrgconf_data.set('HAVE_APM', (build_apm or build_acpi) ? '1' : false) 251ed6184dfSmrgconf_data.set('HAVE_ACPI', build_acpi ? '1' : false) 2521b5d61b8Smrg 253ed6184dfSmrgconf_data.set('DDXOSVERRORF', build_xwin ? '1' : false) 254ed6184dfSmrgconf_data.set('DDXBEFORERESET', build_xwin ? '1' : false) 2551b5d61b8Smrgenable_debugging = get_option('buildtype') == 'debug' 256ed6184dfSmrgconf_data.set('DEBUG', enable_debugging ? '1' : false) 2571b5d61b8Smrg 2581b5d61b8Smrgconf_data.set_quoted('XVENDORNAME', get_option('vendor_name')) 2591b5d61b8Smrgconf_data.set_quoted('XVENDORNAMESHORT', get_option('vendor_name_short')) 2601b5d61b8Smrgconf_data.set_quoted('__VENDORDWEBSUPPORT__', get_option('vendor_web')) 2611b5d61b8Smrgconf_data.set_quoted('BUILDERADDR', get_option('builder_addr')) 2621b5d61b8Smrgconf_data.set_quoted('BUILDERSTRING', get_option('builder_string')) 2631b5d61b8Smrg 264ed6184dfSmrgif build_rootless 265ed6184dfSmrg conf_data.set('ROOTLESS', build_rootless ? '1' : false) 266ed6184dfSmrg conf_data.set('ROOTLESS_WORKAROUND', 1) 267ed6184dfSmrg conf_data.set('ROOTLESS_SAFEALPHA', 1) 268ed6184dfSmrgendif 269ed6184dfSmrg 2701b5d61b8Smrg# 2711b5d61b8Smrg# for xorg-server.h only 2721b5d61b8Smrg# 2731b5d61b8Smrgdefines_svr4 = '''#if !defined(SVR4) && !defined(__svr4__) && !defined(__SVR4) 2741b5d61b8Smrg#error "I am not SVR4" 2751b5d61b8Smrg#endif 2761b5d61b8Smrg''' 2771b5d61b8Smrg 2781b5d61b8Smrg# BSD specifics 2791b5d61b8Smrgsupports_pccons = false 2801b5d61b8Smrgsupports_pcvt = false 2811b5d61b8Smrgsupports_syscons = false 2821b5d61b8Smrgsupports_wscons = false 2831b5d61b8Smrgcsrg_based = false 2841b5d61b8Smrg 285ed6184dfSmrgif host_machine.system() == 'freebsd' or host_machine.system() == 'dragonfly' 2861b5d61b8Smrg supports_pccons = true 2871b5d61b8Smrg supports_pcvt = true 2881b5d61b8Smrg supports_syscons = true 2891b5d61b8Smrg csrg_based = true 2901b5d61b8Smrgendif 2911b5d61b8Smrg 2921b5d61b8Smrgif host_machine.system() == 'kfreebsd' 2931b5d61b8Smrg supports_pccons = true 2941b5d61b8Smrg supports_pcvt = true 2951b5d61b8Smrg supports_syscons = true 2961b5d61b8Smrgendif 2971b5d61b8Smrg 2981b5d61b8Smrgif host_machine.system() == 'netbsd' 2991b5d61b8Smrg supports_pccons = true 3001b5d61b8Smrg supports_pcvt = true 3011b5d61b8Smrg supports_wscons = true 3021b5d61b8Smrg csrg_based = true 3031b5d61b8Smrgendif 3041b5d61b8Smrg 3051b5d61b8Smrgif host_machine.system() == 'openbsd' 3061b5d61b8Smrg supports_pcvt = true 3071b5d61b8Smrg supports_wscons = true 3081b5d61b8Smrg csrg_based = true 3091b5d61b8Smrgendif 3101b5d61b8Smrg 311ed6184dfSmrgif host_machine.system() == 'darwin' 312ed6184dfSmrg csrg_based = true 313ed6184dfSmrgendif 314ed6184dfSmrg 315ed6184dfSmrgconf_data.set('SVR4', cc.compiles(defines_svr4) ? '1' : false) 3161b5d61b8Smrgconf_data.set_quoted('XKB_DFLT_RULES', get_option('xkb_default_rules')) 317ed6184dfSmrgconf_data.set('XORGSERVER', build_xorg ? '1' : false) 3181b5d61b8Smrgconf_data.set_quoted('XCONFIGFILE', 'xorg.conf') 3191b5d61b8Smrgconf_data.set_quoted('__XSERVERNAME__', 'Xorg') 320ed6184dfSmrgconf_data.set('WITH_VGAHW', build_vgahw ? '1' : false) 321ed6184dfSmrgconf_data.set('CSRG_BASED', csrg_based ? '1' : false) 322ed6184dfSmrgconf_data.set('PCCONS_SUPPORT', supports_pccons ? '1' : false) 323ed6184dfSmrgconf_data.set('PCVT_SUPPORT', supports_pcvt ? '1' : false) 324ed6184dfSmrgconf_data.set('SYSCONS_SUPPORT', supports_syscons ? '1' : false) 325ed6184dfSmrgconf_data.set('WSCONS_SUPPORT', supports_wscons ? '1' : false) 326ed6184dfSmrgconf_data.set('XSERVER_LIBPCIACCESS', get_option('pciaccess') ? '1' : false) 327ed6184dfSmrgconf_data.set('XSERVER_PLATFORM_BUS', build_udev_kms ? '1' : false) 3281b5d61b8Smrg 3291b5d61b8Smrgconfigure_file(output : 'dix-config.h', 3301b5d61b8Smrg configuration : conf_data) 3311b5d61b8Smrg 3321b5d61b8Smrgconfigure_file(output : 'xorg-server.h', 3331b5d61b8Smrg input : 'xorg-server.h.meson.in', 3341b5d61b8Smrg configuration : conf_data, 335ed6184dfSmrg install: build_xorg, 3361b5d61b8Smrg install_dir: xorgsdkdir) 3371b5d61b8Smrg 3381b5d61b8Smrgversion_data = configuration_data() 3391b5d61b8Smrgversion_data.set('VENDOR_RELEASE', '@0@'.format(release)) 3401b5d61b8Smrgversion_data.set_quoted('VENDOR_NAME', get_option('vendor_name')) 3411b5d61b8Smrgversion_data.set_quoted('VENDOR_NAME_SHORT', get_option('vendor_name_short')) 3421b5d61b8Smrgversion_data.set_quoted('VENDOR_WEB', get_option('vendor_web')) 3431b5d61b8Smrgversion_data.set_quoted('VENDOR_MAN_VERSION', 'Version @0@.@1@.@2@'.format(major, minor, patch)) 3441b5d61b8Smrgconfigure_file(output : 'version-config.h', 3451b5d61b8Smrg configuration : version_data) 3461b5d61b8Smrg 3471b5d61b8Smrgxkb_data = configuration_data() 3481b5d61b8Smrg 3491b5d61b8Smrgxkb_data.set_quoted('XKB_BIN_DIRECTORY', xkb_bin_dir) 3501b5d61b8Smrgxkb_data.set_quoted('XKB_BASE_DIRECTORY', xkb_dir) 3511b5d61b8Smrgxkb_data.set_quoted('XKB_DFLT_RULES', get_option('xkb_default_rules')) 3521b5d61b8Smrgxkb_data.set_quoted('XKB_DFLT_MODEL', get_option('xkb_default_model')) 3531b5d61b8Smrgxkb_data.set_quoted('XKB_DFLT_LAYOUT', get_option('xkb_default_layout')) 3541b5d61b8Smrgxkb_data.set_quoted('XKB_DFLT_VARIANT', get_option('xkb_default_variant')) 3551b5d61b8Smrgxkb_data.set_quoted('XKB_DFLT_OPTIONS', get_option('xkb_default_options')) 356ed6184dfSmrgxkb_data.set_quoted('XKM_OUTPUT_DIR', xkb_output_dir + '/') 3571b5d61b8Smrg 3581b5d61b8Smrgconfigure_file(output : 'xkb-config.h', 3591b5d61b8Smrg configuration : xkb_data) 3601b5d61b8Smrg 3611b5d61b8Smrgxorg_data = configuration_data() 3621b5d61b8Smrg 3631b5d61b8Smrgxorg_data.set_quoted('XORG_BIN_DIRECTORY', get_option('bindir')) 3641b5d61b8Smrgxorg_data.set('XORG_VERSION_CURRENT', release) 3651b5d61b8Smrgxorg_data.set_quoted('XF86CONFIGFILE', 'xorg.conf') 3661b5d61b8Smrgxorg_data.set_quoted('XCONFIGFILE', 'xorg.conf') 3671b5d61b8Smrgxorg_data.set_quoted('XCONFIGDIR', 'xorg.conf.d') 3681b5d61b8Smrgxorg_data.set_quoted('DEFAULT_XDG_DATA_HOME', '.local/share') 3691b5d61b8Smrgxorg_data.set_quoted('DEFAULT_XDG_DATA_HOME_LOGDIR', 'xorg') 3701b5d61b8Smrgxorg_data.set_quoted('DEFAULT_LOGDIR', log_dir) 3711b5d61b8Smrgxorg_data.set_quoted('DEFAULT_LOGPREFIX', 'Xorg.') 3721b5d61b8Smrgxorg_data.set_quoted('DEFAULT_MODULE_PATH', join_paths(get_option('prefix'), module_dir)) 3731b5d61b8Smrgxorg_data.set_quoted('DEFAULT_LIBRARY_PATH', join_paths(get_option('prefix'), get_option('libdir'))) 3741b5d61b8Smrgxorg_data.set_quoted('__XSERVERNAME__', 'Xorg') 375ed6184dfSmrgxorg_data.set('XSERVER_LIBPCIACCESS', get_option('pciaccess') ? '1' : false) 3761b5d61b8Smrgxorg_data.set_quoted('PCI_TXT_IDS_PATH', '') 377ed6184dfSmrgxorg_data.set('XSERVER_PLATFORM_BUS', build_udev_kms ? '1' : false) 378ed6184dfSmrgxorg_data.set('WSCONS_SUPPORT', 379ed6184dfSmrg host_machine.system() == 'netbsd' or host_machine.system() == 'openbsd' ? '1' : false) 380ed6184dfSmrgxorg_data.set('HAVE_STROPTS_H', cc.has_header('stropts.h') ? '1' : false) 381ed6184dfSmrgxorg_data.set('HAVE_SYS_KD_H', cc.has_header('sys/kd.h') ? '1' : false) 382ed6184dfSmrgxorg_data.set('HAVE_SYS_VT_H', cc.has_header('sys/vt.h') ? '1' : false) 383ed6184dfSmrg 384ed6184dfSmrgif host_machine.system() == 'freebsd' or host_machine.system() == 'dragonfly' 3851b5d61b8Smrg if host_machine.cpu_family() == 'x86' or host_machine.cpu_family() == 'x86_64' 386ed6184dfSmrg xorg_data.set('USE_DEV_IO', '1') 3871b5d61b8Smrg endif 3881b5d61b8Smrgelif host_machine.system() == 'netbsd' 3891b5d61b8Smrg if host_machine.cpu_family() == 'x86' or host_machine.cpu_family() == 'x86_64' 390ed6184dfSmrg xorg_data.set('USE_I386_IOPL', '1') 3911b5d61b8Smrg endif 3921b5d61b8Smrgelif host_machine.system() == 'openbsd' 3931b5d61b8Smrg if host_machine.cpu_family() == 'x86' 394ed6184dfSmrg xorg_data.set('USE_I386_IOPL', '1') 3951b5d61b8Smrg endif 3961b5d61b8Smrg if host_machine.cpu_family() == 'x86_64' 397ed6184dfSmrg xorg_data.set('USE_AMD64_IOPL', '1') 3981b5d61b8Smrg endif 3991b5d61b8Smrgendif 4001b5d61b8Smrg 4011b5d61b8Smrgconfigure_file(output : 'xorg-config.h', 4021b5d61b8Smrg input : 'xorg-config.h.meson.in', 4031b5d61b8Smrg configuration : xorg_data) 4041b5d61b8Smrg 4051b5d61b8Smrgxwin_data = configuration_data() 4061b5d61b8Smrgxwin_data.set_quoted('DEFAULT_LOGDIR', log_dir) 407ed6184dfSmrgxwin_data.set('HAS_WINSOCK', host_machine.system() == 'windows' ? '1' : false, 408ed6184dfSmrg description: 'Use Windows sockets') 409ed6184dfSmrgxwin_data.set('HAS_DEVWINDOWS', host_machine.system() == 'cygwin' ? '1' : false, 410ed6184dfSmrg description: 'Has /dev/windows for signaling new win32 messages') 411ed6184dfSmrgxwin_data.set('RELOCATE_PROJECTROOT', host_machine.system() == 'windows' ? '1' : false, 412ed6184dfSmrg description: 'Make paths relative to the xserver installation location') 4131b5d61b8Smrg# XXX: these three are all the same as DEBUG so we should just change to that 4141b5d61b8Smrgxwin_data.set10('CYGDEBUG', enable_debugging) 4151b5d61b8Smrgxwin_data.set10('CYGWINDOWING_DEBUG',enable_debugging) 4161b5d61b8Smrgxwin_data.set10('CYGMULTIWINDOW_DEBUG', enable_debugging) 4171b5d61b8Smrg 4181b5d61b8Smrgconfigure_file(output : 'xwin-config.h', 4191b5d61b8Smrg input : 'xwin-config.h.meson.in', 4201b5d61b8Smrg configuration : xwin_data) 4211b5d61b8Smrg 422ed6184dfSmrgdtrace_hdr = [] 423ed6184dfSmrgdtrace_tmpl = files('Xserver.d') 424ed6184dfSmrgif with_dtrace 425ed6184dfSmrg dtrace_header = generator(dtrace, 426ed6184dfSmrg output: '@BASENAME@-dtrace.h', 427ed6184dfSmrg arguments: ['-h', '-s', '@INPUT@', '-o', '@OUTPUT@'] 428ed6184dfSmrg ) 4291b5d61b8Smrg 430ed6184dfSmrg dtrace_hdr += dtrace_header.process(dtrace_tmpl) 431ed6184dfSmrgendif 4321b5d61b8Smrg 4331b5d61b8Smrgif build_xorg 4341b5d61b8Smrg install_data( 4351b5d61b8Smrg [ 4361b5d61b8Smrg 'XIstubs.h', 4371b5d61b8Smrg 'Xprintf.h', 4381b5d61b8Smrg 'callback.h', 4391b5d61b8Smrg 'client.h', 4401b5d61b8Smrg 'closestr.h', 4411b5d61b8Smrg 'closure.h', 4421b5d61b8Smrg 'colormap.h', 4431b5d61b8Smrg 'colormapst.h', 4441b5d61b8Smrg 'hotplug.h', 4451b5d61b8Smrg 'cursor.h', 4461b5d61b8Smrg 'cursorstr.h', 4471b5d61b8Smrg 'dix.h', 4481b5d61b8Smrg 'dixaccess.h', 4491b5d61b8Smrg 'dixevents.h', 4501b5d61b8Smrg 'dixfont.h', 4511b5d61b8Smrg 'dixfontstr.h', 4521b5d61b8Smrg 'dixgrabs.h', 4531b5d61b8Smrg 'dixstruct.h', 4541b5d61b8Smrg 'events.h', 4551b5d61b8Smrg 'exevents.h', 4561b5d61b8Smrg 'extension.h', 4571b5d61b8Smrg 'extinit.h', 4581b5d61b8Smrg 'extnsionst.h', 459ed6184dfSmrg 'fourcc.h', 4601b5d61b8Smrg 'gc.h', 4611b5d61b8Smrg 'gcstruct.h', 4621b5d61b8Smrg 'globals.h', 4631b5d61b8Smrg 'glx_extinit.h', 4641b5d61b8Smrg 'glxvndabi.h', 4651b5d61b8Smrg 'input.h', 4661b5d61b8Smrg 'inputstr.h', 4671b5d61b8Smrg 'list.h', 4681b5d61b8Smrg 'misc.h', 4691b5d61b8Smrg 'miscstruct.h', 4701b5d61b8Smrg 'opaque.h', 4711b5d61b8Smrg 'nonsdk_extinit.h', 4721b5d61b8Smrg 'optionstr.h', 4731b5d61b8Smrg 'os.h', 4741b5d61b8Smrg 'pixmap.h', 4751b5d61b8Smrg 'pixmapstr.h', 4761b5d61b8Smrg 'privates.h', 4771b5d61b8Smrg 'property.h', 4781b5d61b8Smrg 'propertyst.h', 4791b5d61b8Smrg 'ptrveloc.h', 4801b5d61b8Smrg 'region.h', 4811b5d61b8Smrg 'regionstr.h', 4821b5d61b8Smrg 'registry.h', 4831b5d61b8Smrg 'resource.h', 4841b5d61b8Smrg 'rgb.h', 4851b5d61b8Smrg 'screenint.h', 4861b5d61b8Smrg 'scrnintstr.h', 4871b5d61b8Smrg 'selection.h', 4881b5d61b8Smrg 'servermd.h', 4891b5d61b8Smrg 'validate.h', 4901b5d61b8Smrg 'displaymode.h', 4911b5d61b8Smrg 'window.h', 4921b5d61b8Smrg 'windowstr.h', 4931b5d61b8Smrg 'xkbfile.h', 4941b5d61b8Smrg 'xkbsrv.h', 4951b5d61b8Smrg 'xkbstr.h', 4961b5d61b8Smrg 'xkbrules.h', 4971b5d61b8Smrg 'Xprintf.h', 4981b5d61b8Smrg 'xserver_poll.h', 4991b5d61b8Smrg 'xserver-properties.h', 5001b5d61b8Smrg ], 5011b5d61b8Smrg install_dir: xorgsdkdir, 5021b5d61b8Smrg ) 5031b5d61b8Smrgendif 504