meson.build revision f2346221
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)
177ed6184dfSmrgconf_data.set('HAVE_TIMINGSAFE_MEMCMP', cc.has_function('timingsafe_memcmp') ? '1' : false)
178ed6184dfSmrgconf_data.set('HAVE_VASPRINTF', cc.has_function('vasprintf') ? '1' : false)
179ed6184dfSmrgconf_data.set('HAVE_VSNPRINTF', cc.has_function('vsnprintf') ? '1' : false)
180ed6184dfSmrgconf_data.set('HAVE_WALKCONTEXT', cc.has_function('walkcontext') ? '1' : false)
1811b5d61b8Smrg
1821b5d61b8Smrgconf_data.set('BUSFAULT', conf_data.get('HAVE_SIGACTION'))
1831b5d61b8Smrg
1841b5d61b8Smrg# Don't let X dependencies typedef 'pointer'
1851b5d61b8Smrgconf_data.set('_XTYPEDEF_POINTER', '1')
1861b5d61b8Smrgconf_data.set('_XITYPEDEF_POINTER', '1')
1871b5d61b8Smrg
1881b5d61b8Smrgconf_data.set('LISTEN_TCP', get_option('listen_tcp'))
1891b5d61b8Smrgconf_data.set('LISTEN_UNIX', get_option('listen_unix'))
1901b5d61b8Smrgconf_data.set('LISTEN_LOCAL', get_option('listen_local'))
1911b5d61b8Smrg
192ed6184dfSmrgif cc.has_header_symbol('sys/socket.h', 'SCM_RIGHTS')
193ed6184dfSmrg  conf_data.set('XTRANS_SEND_FDS', '1')
194ed6184dfSmrgendif
1951b5d61b8Smrg
196ed6184dfSmrgif conf_data.get('HAVE_GETPEEREID').to_int() == 0 and conf_data.get('HAVE_GETPEERUCRED').to_int() == 0
197ed6184dfSmrg    if not cc.has_header_symbol('sys/socket.h', 'SO_PEERCRED')
198ed6184dfSmrg        conf_data.set('NO_LOCAL_CLIENT_CRED', 1)
199ed6184dfSmrg    endif
200ed6184dfSmrgendif
201ed6184dfSmrg
202ed6184dfSmrgconf_data.set('TCPCONN', '1')
203ed6184dfSmrgconf_data.set('UNIXCONN', host_machine.system() != 'windows' ? '1' : false)
204ed6184dfSmrgconf_data.set('IPv6', build_ipv6 ? '1' : false)
2051b5d61b8Smrg
2061b5d61b8Smrgconf_data.set('BIGREQS', '1')
207a1e1cf94Smrgconf_data.set('COMPOSITE', '1')
2081b5d61b8Smrgconf_data.set('DAMAGE', '1')
2091b5d61b8Smrgconf_data.set('DBE', '1')
210ed6184dfSmrgconf_data.set('DGA', build_dga ? '1' : false)
211ed6184dfSmrgconf_data.set('DPMSExtension', build_dpms ? '1' : false)
212ed6184dfSmrgconf_data.set('DRI2', build_dri2 ? '1' : false)
213ed6184dfSmrgconf_data.set('DRI3', build_dri3 ? '1' : false)
214ed6184dfSmrgif build_glx
215ed6184dfSmrg    conf_data.set_quoted('DRI_DRIVER_PATH', dri_dep.get_pkgconfig_variable('dridriverdir'))
216ed6184dfSmrgendif
217ed6184dfSmrgconf_data.set('HAS_SHM', build_mitshm ? '1' : false)
218ed6184dfSmrgconf_data.set('MITSHM', build_mitshm ? '1' : false)
219ed6184dfSmrgconf_data.set('PANORAMIX', build_xinerama ? '1' : false)
2201b5d61b8Smrgconf_data.set('PRESENT', '1')
2211b5d61b8Smrgconf_data.set('RANDR', '1')
222ed6184dfSmrgconf_data.set('RES', build_res ? '1' : false)
2231b5d61b8Smrgconf_data.set('RENDER', '1')
224ed6184dfSmrgconf_data.set('SCREENSAVER', build_screensaver ? '1' : false)
2251b5d61b8Smrgconf_data.set('SHAPE', '1')
226ed6184dfSmrgconf_data.set('XACE', build_xace ? '1' : false)
2271b5d61b8Smrgconf_data.set('XCMISC', '1')
228ed6184dfSmrgconf_data.set('XCSECURITY', build_xsecurity ? '1' : false)
229ed6184dfSmrgconf_data.set('XDMCP', xdmcp_dep.found() ? '1' : false)
230ed6184dfSmrgconf_data.set('XF86BIGFONT', build_xf86bigfont ? '1' : false)
231ed6184dfSmrgconf_data.set('XF86DRI', build_dri1 ? '1' : false)
232ed6184dfSmrgconf_data.set('XF86VIDMODE', 1)
2331b5d61b8Smrgconf_data.set('XFIXES', '1')
234ed6184dfSmrgconf_data.set('XFreeXDGA', build_dga ? '1' : false)
235ed6184dfSmrgconf_data.set('XINERAMA', build_xinerama ? '1' : false)
2361b5d61b8Smrgconf_data.set('XINPUT', '1')
2371b5d61b8Smrgconf_data.set('XRECORD', '1')
238ed6184dfSmrgconf_data.set('XSELINUX', build_xselinux ? '1' : false)
2391b5d61b8Smrgconf_data.set('XSYNC', '1')
2401b5d61b8Smrgconf_data.set('XTEST', '1')
241ed6184dfSmrgconf_data.set('XV', build_xv ? '1' : false)
242ed6184dfSmrgconf_data.set('XvExtension', build_xv ? '1' : false)
243ed6184dfSmrgconf_data.set('XvMCExtension', build_xvmc ? '1' : false)
2441b5d61b8Smrg
245ed6184dfSmrgconf_data.set('HAVE_SHA1_IN_' + sha1.to_upper(), '1', description: 'Use @0@ SHA1 functions'.format(sha1))
246ed6184dfSmrgconf_data.set('HAVE_LIBUNWIND', get_option('libunwind'))
2471b5d61b8Smrg
248ed6184dfSmrgconf_data.set('HAVE_APM', (build_apm or build_acpi) ? '1' : false)
249ed6184dfSmrgconf_data.set('HAVE_ACPI', build_acpi ? '1' : false)
2501b5d61b8Smrg
251ed6184dfSmrgconf_data.set('DDXOSVERRORF', build_xwin ? '1' : false)
252ed6184dfSmrgconf_data.set('DDXBEFORERESET', build_xwin ? '1' : false)
2531b5d61b8Smrgenable_debugging = get_option('buildtype') == 'debug'
254ed6184dfSmrgconf_data.set('DEBUG', enable_debugging ? '1' : false)
2551b5d61b8Smrg
2561b5d61b8Smrgconf_data.set_quoted('XVENDORNAME', get_option('vendor_name'))
2571b5d61b8Smrgconf_data.set_quoted('XVENDORNAMESHORT', get_option('vendor_name_short'))
2581b5d61b8Smrgconf_data.set_quoted('__VENDORDWEBSUPPORT__', get_option('vendor_web'))
2591b5d61b8Smrgconf_data.set_quoted('BUILDERADDR', get_option('builder_addr'))
2601b5d61b8Smrgconf_data.set_quoted('BUILDERSTRING', get_option('builder_string'))
2611b5d61b8Smrg
262ed6184dfSmrgif build_rootless
263ed6184dfSmrg    conf_data.set('ROOTLESS', build_rootless ? '1' : false)
264ed6184dfSmrg    conf_data.set('ROOTLESS_WORKAROUND', 1)
265ed6184dfSmrg    conf_data.set('ROOTLESS_SAFEALPHA', 1)
266ed6184dfSmrgendif
267ed6184dfSmrg
2681b5d61b8Smrg#
2691b5d61b8Smrg# for xorg-server.h only
2701b5d61b8Smrg#
2711b5d61b8Smrgdefines_svr4 = '''#if !defined(SVR4) && !defined(__svr4__) && !defined(__SVR4)
2721b5d61b8Smrg#error "I am not SVR4"
2731b5d61b8Smrg#endif
2741b5d61b8Smrg'''
2751b5d61b8Smrg
2761b5d61b8Smrg# BSD specifics
2771b5d61b8Smrgsupports_pccons = false
2781b5d61b8Smrgsupports_pcvt = false
2791b5d61b8Smrgsupports_syscons = false
2801b5d61b8Smrgsupports_wscons = false
2811b5d61b8Smrgcsrg_based = false
2821b5d61b8Smrg
283ed6184dfSmrgif host_machine.system() == 'freebsd' or host_machine.system() == 'dragonfly'
2841b5d61b8Smrg  supports_pccons = true
2851b5d61b8Smrg  supports_pcvt = true
2861b5d61b8Smrg  supports_syscons = true
2871b5d61b8Smrg  csrg_based = true
2881b5d61b8Smrgendif
2891b5d61b8Smrg
2901b5d61b8Smrgif host_machine.system() == 'kfreebsd'
2911b5d61b8Smrg  supports_pccons = true
2921b5d61b8Smrg  supports_pcvt = true
2931b5d61b8Smrg  supports_syscons = true
2941b5d61b8Smrgendif
2951b5d61b8Smrg
2961b5d61b8Smrgif host_machine.system() == 'netbsd'
2971b5d61b8Smrg  supports_pccons = true
2981b5d61b8Smrg  supports_pcvt = true
2991b5d61b8Smrg  supports_wscons = true
3001b5d61b8Smrg  csrg_based = true
3011b5d61b8Smrgendif
3021b5d61b8Smrg
3031b5d61b8Smrgif host_machine.system() == 'openbsd'
3041b5d61b8Smrg  supports_pcvt = true
3051b5d61b8Smrg  supports_wscons = true
3061b5d61b8Smrg  csrg_based = true
3071b5d61b8Smrgendif
3081b5d61b8Smrg
309ed6184dfSmrgif host_machine.system() == 'darwin'
310ed6184dfSmrg  csrg_based = true
311ed6184dfSmrgendif
312ed6184dfSmrg
313ed6184dfSmrgconf_data.set('SVR4', cc.compiles(defines_svr4) ? '1' : false)
3141b5d61b8Smrgconf_data.set_quoted('XKB_DFLT_RULES', get_option('xkb_default_rules'))
315ed6184dfSmrgconf_data.set('XORGSERVER', build_xorg ? '1' : false)
3161b5d61b8Smrgconf_data.set_quoted('XCONFIGFILE', 'xorg.conf')
3171b5d61b8Smrgconf_data.set_quoted('__XSERVERNAME__', 'Xorg')
318ed6184dfSmrgconf_data.set('WITH_VGAHW', build_vgahw ? '1' : false)
319ed6184dfSmrgconf_data.set('CSRG_BASED', csrg_based ? '1' : false)
320ed6184dfSmrgconf_data.set('PCCONS_SUPPORT', supports_pccons ? '1' : false)
321ed6184dfSmrgconf_data.set('PCVT_SUPPORT', supports_pcvt ? '1' : false)
322ed6184dfSmrgconf_data.set('SYSCONS_SUPPORT', supports_syscons ? '1' : false)
323ed6184dfSmrgconf_data.set('WSCONS_SUPPORT', supports_wscons ? '1' : false)
324ed6184dfSmrgconf_data.set('XSERVER_LIBPCIACCESS', get_option('pciaccess') ? '1' : false)
325ed6184dfSmrgconf_data.set('XSERVER_PLATFORM_BUS', build_udev_kms ? '1' : false)
3261b5d61b8Smrg
3271b5d61b8Smrgconfigure_file(output : 'dix-config.h',
3281b5d61b8Smrg               configuration : conf_data)
3291b5d61b8Smrg
3301b5d61b8Smrgconfigure_file(output : 'xorg-server.h',
3311b5d61b8Smrg               input : 'xorg-server.h.meson.in',
3321b5d61b8Smrg               configuration : conf_data,
333ed6184dfSmrg               install: build_xorg,
3341b5d61b8Smrg               install_dir: xorgsdkdir)
3351b5d61b8Smrg
3361b5d61b8Smrgversion_data = configuration_data()
3371b5d61b8Smrgversion_data.set('VENDOR_RELEASE', '@0@'.format(release))
3381b5d61b8Smrgversion_data.set_quoted('VENDOR_NAME', get_option('vendor_name'))
3391b5d61b8Smrgversion_data.set_quoted('VENDOR_NAME_SHORT', get_option('vendor_name_short'))
3401b5d61b8Smrgversion_data.set_quoted('VENDOR_WEB', get_option('vendor_web'))
3411b5d61b8Smrgversion_data.set_quoted('VENDOR_MAN_VERSION', 'Version @0@.@1@.@2@'.format(major, minor, patch))
3421b5d61b8Smrgconfigure_file(output : 'version-config.h',
3431b5d61b8Smrg               configuration : version_data)
3441b5d61b8Smrg
3451b5d61b8Smrgxkb_data = configuration_data()
3461b5d61b8Smrg
3471b5d61b8Smrgxkb_data.set_quoted('XKB_BIN_DIRECTORY', xkb_bin_dir)
3481b5d61b8Smrgxkb_data.set_quoted('XKB_BASE_DIRECTORY', xkb_dir)
3491b5d61b8Smrgxkb_data.set_quoted('XKB_DFLT_RULES', get_option('xkb_default_rules'))
3501b5d61b8Smrgxkb_data.set_quoted('XKB_DFLT_MODEL', get_option('xkb_default_model'))
3511b5d61b8Smrgxkb_data.set_quoted('XKB_DFLT_LAYOUT', get_option('xkb_default_layout'))
3521b5d61b8Smrgxkb_data.set_quoted('XKB_DFLT_VARIANT', get_option('xkb_default_variant'))
3531b5d61b8Smrgxkb_data.set_quoted('XKB_DFLT_OPTIONS', get_option('xkb_default_options'))
354ed6184dfSmrgxkb_data.set_quoted('XKM_OUTPUT_DIR', xkb_output_dir + '/')
3551b5d61b8Smrg
3561b5d61b8Smrgconfigure_file(output : 'xkb-config.h',
3571b5d61b8Smrg               configuration : xkb_data)
3581b5d61b8Smrg
3591b5d61b8Smrgxorg_data = configuration_data()
3601b5d61b8Smrg
3611b5d61b8Smrgxorg_data.set_quoted('XORG_BIN_DIRECTORY', get_option('bindir'))
3621b5d61b8Smrgxorg_data.set('XORG_VERSION_CURRENT', release)
3631b5d61b8Smrgxorg_data.set_quoted('XF86CONFIGFILE', 'xorg.conf')
3641b5d61b8Smrgxorg_data.set_quoted('XCONFIGFILE', 'xorg.conf')
3651b5d61b8Smrgxorg_data.set_quoted('XCONFIGDIR', 'xorg.conf.d')
3661b5d61b8Smrgxorg_data.set_quoted('DEFAULT_XDG_DATA_HOME', '.local/share')
3671b5d61b8Smrgxorg_data.set_quoted('DEFAULT_XDG_DATA_HOME_LOGDIR', 'xorg')
3681b5d61b8Smrgxorg_data.set_quoted('DEFAULT_LOGDIR', log_dir)
3691b5d61b8Smrgxorg_data.set_quoted('DEFAULT_LOGPREFIX', 'Xorg.')
3701b5d61b8Smrgxorg_data.set_quoted('DEFAULT_MODULE_PATH', join_paths(get_option('prefix'), module_dir))
3711b5d61b8Smrgxorg_data.set_quoted('DEFAULT_LIBRARY_PATH', join_paths(get_option('prefix'), get_option('libdir')))
3721b5d61b8Smrgxorg_data.set_quoted('__XSERVERNAME__', 'Xorg')
373ed6184dfSmrgxorg_data.set('XSERVER_LIBPCIACCESS', get_option('pciaccess') ? '1' : false)
3741b5d61b8Smrgxorg_data.set_quoted('PCI_TXT_IDS_PATH', '')
375ed6184dfSmrgxorg_data.set('XSERVER_PLATFORM_BUS', build_udev_kms ? '1' : false)
376ed6184dfSmrgxorg_data.set('WSCONS_SUPPORT',
377ed6184dfSmrg              host_machine.system() == 'netbsd' or host_machine.system() == 'openbsd' ? '1' : false)
378ed6184dfSmrgxorg_data.set('HAVE_STROPTS_H', cc.has_header('stropts.h') ? '1' : false)
379ed6184dfSmrgxorg_data.set('HAVE_SYS_KD_H', cc.has_header('sys/kd.h') ? '1' : false)
380ed6184dfSmrgxorg_data.set('HAVE_SYS_VT_H', cc.has_header('sys/vt.h') ? '1' : false)
381ed6184dfSmrg
382ed6184dfSmrgif host_machine.system() == 'freebsd' or host_machine.system() == 'dragonfly'
3831b5d61b8Smrg    if host_machine.cpu_family() == 'x86' or host_machine.cpu_family() == 'x86_64'
384ed6184dfSmrg        xorg_data.set('USE_DEV_IO', '1')
3851b5d61b8Smrg    endif
3861b5d61b8Smrgelif host_machine.system() == 'netbsd'
3871b5d61b8Smrg    if host_machine.cpu_family() == 'x86' or host_machine.cpu_family() == 'x86_64'
388ed6184dfSmrg        xorg_data.set('USE_I386_IOPL', '1')
3891b5d61b8Smrg    endif
3901b5d61b8Smrgelif host_machine.system() == 'openbsd'
3911b5d61b8Smrg    if host_machine.cpu_family() == 'x86'
392ed6184dfSmrg        xorg_data.set('USE_I386_IOPL', '1')
3931b5d61b8Smrg    endif
3941b5d61b8Smrg    if host_machine.cpu_family() == 'x86_64'
395ed6184dfSmrg        xorg_data.set('USE_AMD64_IOPL', '1')
3961b5d61b8Smrg    endif
3971b5d61b8Smrgendif
3981b5d61b8Smrg
3991b5d61b8Smrgconfigure_file(output : 'xorg-config.h',
4001b5d61b8Smrg               input : 'xorg-config.h.meson.in',
4011b5d61b8Smrg               configuration : xorg_data)
4021b5d61b8Smrg
4031b5d61b8Smrgxwin_data = configuration_data()
4041b5d61b8Smrgxwin_data.set_quoted('DEFAULT_LOGDIR', log_dir)
405ed6184dfSmrgxwin_data.set('HAS_WINSOCK', host_machine.system() == 'windows' ? '1' : false,
406ed6184dfSmrg              description: 'Use Windows sockets')
407ed6184dfSmrgxwin_data.set('HAS_DEVWINDOWS', host_machine.system() == 'cygwin' ? '1' : false,
408ed6184dfSmrg              description: 'Has /dev/windows for signaling new win32 messages')
409ed6184dfSmrgxwin_data.set('RELOCATE_PROJECTROOT', host_machine.system() == 'windows' ? '1' : false,
410ed6184dfSmrg              description: 'Make paths relative to the xserver installation location')
4111b5d61b8Smrg# XXX: these three are all the same as DEBUG so we should just change to that
4121b5d61b8Smrgxwin_data.set10('CYGDEBUG', enable_debugging)
4131b5d61b8Smrgxwin_data.set10('CYGWINDOWING_DEBUG',enable_debugging)
4141b5d61b8Smrgxwin_data.set10('CYGMULTIWINDOW_DEBUG', enable_debugging)
4151b5d61b8Smrg
4161b5d61b8Smrgconfigure_file(output : 'xwin-config.h',
4171b5d61b8Smrg               input : 'xwin-config.h.meson.in',
4181b5d61b8Smrg               configuration : xwin_data)
4191b5d61b8Smrg
420ed6184dfSmrgdtrace_hdr = []
421ed6184dfSmrgdtrace_tmpl = files('Xserver.d')
422ed6184dfSmrgif with_dtrace
423ed6184dfSmrg    dtrace_header = generator(dtrace,
424ed6184dfSmrg        output: '@BASENAME@-dtrace.h',
425ed6184dfSmrg        arguments: ['-h', '-s', '@INPUT@', '-o', '@OUTPUT@']
426ed6184dfSmrg    )
4271b5d61b8Smrg
428ed6184dfSmrg    dtrace_hdr += dtrace_header.process(dtrace_tmpl)
429ed6184dfSmrgendif
4301b5d61b8Smrg
4311b5d61b8Smrgif build_xorg
4321b5d61b8Smrg    install_data(
4331b5d61b8Smrg        [
4341b5d61b8Smrg            'XIstubs.h',
4351b5d61b8Smrg            'Xprintf.h',
4361b5d61b8Smrg            'callback.h',
4371b5d61b8Smrg            'client.h',
4381b5d61b8Smrg            'closestr.h',
4391b5d61b8Smrg            'closure.h',
4401b5d61b8Smrg            'colormap.h',
4411b5d61b8Smrg            'colormapst.h',
4421b5d61b8Smrg            'hotplug.h',
4431b5d61b8Smrg            'cursor.h',
4441b5d61b8Smrg            'cursorstr.h',
4451b5d61b8Smrg            'dix.h',
4461b5d61b8Smrg            'dixaccess.h',
4471b5d61b8Smrg            'dixevents.h',
4481b5d61b8Smrg            'dixfont.h',
4491b5d61b8Smrg            'dixfontstr.h',
4501b5d61b8Smrg            'dixgrabs.h',
4511b5d61b8Smrg            'dixstruct.h',
4521b5d61b8Smrg            'events.h',
4531b5d61b8Smrg            'exevents.h',
4541b5d61b8Smrg            'extension.h',
4551b5d61b8Smrg            'extinit.h',
4561b5d61b8Smrg            'extnsionst.h',
457ed6184dfSmrg            'fourcc.h',
4581b5d61b8Smrg            'gc.h',
4591b5d61b8Smrg            'gcstruct.h',
4601b5d61b8Smrg            'globals.h',
4611b5d61b8Smrg            'glx_extinit.h',
4621b5d61b8Smrg            'glxvndabi.h',
4631b5d61b8Smrg            'input.h',
4641b5d61b8Smrg            'inputstr.h',
4651b5d61b8Smrg            'list.h',
4661b5d61b8Smrg            'misc.h',
4671b5d61b8Smrg            'miscstruct.h',
4681b5d61b8Smrg            'opaque.h',
4691b5d61b8Smrg            'nonsdk_extinit.h',
4701b5d61b8Smrg            'optionstr.h',
4711b5d61b8Smrg            'os.h',
4721b5d61b8Smrg            'pixmap.h',
4731b5d61b8Smrg            'pixmapstr.h',
4741b5d61b8Smrg            'privates.h',
4751b5d61b8Smrg            'property.h',
4761b5d61b8Smrg            'propertyst.h',
4771b5d61b8Smrg            'ptrveloc.h',
4781b5d61b8Smrg            'region.h',
4791b5d61b8Smrg            'regionstr.h',
4801b5d61b8Smrg            'registry.h',
4811b5d61b8Smrg            'resource.h',
4821b5d61b8Smrg            'rgb.h',
4831b5d61b8Smrg            'screenint.h',
4841b5d61b8Smrg            'scrnintstr.h',
4851b5d61b8Smrg            'selection.h',
4861b5d61b8Smrg            'servermd.h',
4871b5d61b8Smrg            'validate.h',
4881b5d61b8Smrg            'displaymode.h',
4891b5d61b8Smrg            'window.h',
4901b5d61b8Smrg            'windowstr.h',
4911b5d61b8Smrg            'xkbfile.h',
4921b5d61b8Smrg            'xkbsrv.h',
4931b5d61b8Smrg            'xkbstr.h',
4941b5d61b8Smrg            'xkbrules.h',
4951b5d61b8Smrg            'Xprintf.h',
4961b5d61b8Smrg            'xserver_poll.h',
4971b5d61b8Smrg            'xserver-properties.h',
4981b5d61b8Smrg        ],
4991b5d61b8Smrg        install_dir: xorgsdkdir,
5001b5d61b8Smrg    )
5011b5d61b8Smrgendif
502